• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

        在DataGrid中容易運用下拉下文框

        在DataGrid中容易運用下拉下文框

        更新時間:2022-05-10 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        在DataGrid中簡單使用下拉列表框

        作者:Tushar Ameta

        翻譯:秋楓

        在DataGrid中使用下拉列表問題。這篇文章講了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件。不過原文不全,無法調(diào)試,在這里為了說清楚點,對原文作了一些修改,整篇文章主要包括三方面的內(nèi)容。

        1. 在DataGrid中加入ComboBox列;

        2. 把在DataGrid中的修改保存到對應(yīng)的網(wǎng)格;

        3. 設(shè)置DataGrid中網(wǎng)格的焦點。



        下面是整個源代碼,一些功能可以看注釋。

        using System;

        using System.Drawing;

        using System.Collections;

        using System.ComponentModel;

        using System.Windows.Forms;

        using System.Data;



        namespace DataGridTest

        {

        public class Form1 : System.Windows.Forms.Form

        {

        private System.Windows.Forms.DataGrid dgdFunctionArea;

        private DataTable dtblFunctionalArea;

        private System.Windows.Forms.Button buttonFocus;

        private System.ComponentModel.Container components = null;



        public Form1()

        {

        InitializeComponent();

        PopulateGrid();

        }



        protected override void Dispose( bool disposing )

        {

        if( disposing )

        {

        if (components != null)

        {

        components.Dispose();

        }

        }

        base.Dispose( disposing );

        }



        #region Windows 窗體設(shè)計器生成的代碼

        private void InitializeComponent()

        {

        this.dgdFunctionArea = new System.Windows.Forms.DataGrid();

        this.buttonFocus = new System.Windows.Forms.Button();

        ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();

        this.SuspendLayout();

        //

        // dgdFunctionArea

        //

        this.dgdFunctionArea.DataMember = "";

        this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;

        this.dgdFunctionArea.Location = new System.Drawing.Point(4, 8);

        this.dgdFunctionArea.Name = "dgdFunctionArea";

        this.dgdFunctionArea.Size = new System.Drawing.Size(316, 168);

        this.dgdFunctionArea.TabIndex = 0;

        //

        // buttonFocus

        //

        this.buttonFocus.Location = new System.Drawing.Point(232, 188);

        this.buttonFocus.Name = "buttonFocus";

        this.buttonFocus.Size = new System.Drawing.Size(84, 23);

        this.buttonFocus.TabIndex = 1;

        this.buttonFocus.Text = "獲取焦點";

        this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);

        //

        // Form1

        //

        this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

        this.ClientSize = new System.Drawing.Size(332, 217);

        this.Controls.Add(this.buttonFocus);

        this.Controls.Add(this.dgdFunctionArea);

        this.Name = "Form1";

        this.Text = "Form1";

        ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();

        this.ResumeLayout(false);



        }

        #endregion



        /// <summary>

        /// 應(yīng)用程序的主入口點。

        /// </summary>

        [STAThread]

        static void Main()

        {

        Application.Run(new Form1());

        }

        //初始化DataGrid

        private void PopulateGrid()

        {

        //創(chuàng)建一個DataTable對象,包括四列,前三列為String,最后一列為Boolean。

        dtblFunctionalArea = new DataTable ("FunctionArea");

        string[] arrstrFunctionalArea = new string [3]{"Functional Area","Min","Max"};

        DataColumn dtCol = null;

        //創(chuàng)建String列

        for(int i=0; i< 3;i++)

        {

        dtCol = new DataColumn(arrstrFunctionalArea[i]);

        dtCol.DataType = Type.GetType("System.String");

        dtCol.DefaultValue = "";

        dtblFunctionalArea.Columns.Add(dtCol);

        }



        //創(chuàng)建Boolean列,用CheckedBox來顯示。

        DataColumn dtcCheck = new DataColumn("IsMandatory");

        dtcCheck.DataType = System.Type.GetType("System.Boolean");

        dtcCheck.DefaultValue = false;

        dtblFunctionalArea.Columns.Add(dtcCheck);



        //把表綁定到DataGrid

        dgdFunctionArea.DataSource = dtblFunctionalArea;



        //為DataGrid加載DataGridTableStyle樣式

        if(!dgdFunctionArea.TableStyles.Contains("FunctionArea"))

        {

        DataGridTableStyle dgdtblStyle = new DataGridTableStyle();

        dgdtblStyle.MappingName = dtblFunctionalArea.TableName;

        dgdFunctionArea.TableStyles.Add(dgdtblStyle);

        dgdtblStyle.RowHeadersVisible = false;

        dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;

        dgdtblStyle.AllowSorting = false;

        dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);

        dgdtblStyle.RowHeadersVisible = false;

        dgdtblStyle.HeaderForeColor = Color.White;

        dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F,

        System.Drawing.FontStyle.Bold,

        System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));

        dgdtblStyle.GridLineColor = Color.DarkGray;

        dgdtblStyle.PreferredRowHeight = 22;

        dgdFunctionArea.BackgroundColor = Color.White;



        //設(shè)置列的寬度

        GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;

        colStyle[0].Width = 100;

        colStyle[1].Width = 50;

        colStyle[2].Width = 50;

        colStyle[3].Width = 80;

        }



        DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];

        ComboBox cmbFunctionArea = new ComboBox();

        cmbFunctionArea.Items.AddRange(new object[]{"選項一","選項二","選項三"});

        cmbFunctionArea.Cursor = Cursors.Arrow;

        cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;

        cmbFunctionArea.Dock = DockStyle.Fill;

        //在選定項發(fā)生更改并且提交了該更改后發(fā)生

        cmbFunctionArea.SelectionChangeCommitted += new EventHandler(cmbFunctionArea_SelectionChangeCommitted);

        //把ComboBox添加到DataGridTableStyle的第一列

        dgtb.TextBox.Controls.Add(cmbFunctionArea);



        }

        //設(shè)置焦點模擬

        private void GetFocus(int row,int col)

        {

        //先把焦點移動到DataGrid

        this.dgdFunctionArea.Focus();

        //把焦點移動到DataGridCell

        DataGridCell dgc = new DataGridCell(row,col);

        this.dgdFunctionArea.CurrentCell = dgc;

        DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col];

        //設(shè)置焦點

        dgtb.TextBox.Focus();



        }

        //把Combobox上修改的數(shù)據(jù)提交到當前的網(wǎng)格

        private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)

        {

        this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();

        }

        //設(shè)置新的焦點

        private void buttonFocus_Click(object sender, System.EventArgs e)

        {

        //焦點模擬,這里設(shè)置第三行第一列

        GetFocus(2,0);

        }

        }

        }


        下面是測試界面:





        總結(jié),這里是通過DataGridTextBoxColumn.TextBox.Controls.Add方法實現(xiàn)在列中添加ComboBox控件;對于數(shù)據(jù)的保存是使用ComboBox.SelectionChangeCommitted事件來完成;設(shè)置焦點是通過DataGridTextBoxColumn.TextBox.Focus方法來實現(xiàn)。另外通過這個方法也可以添加DateTimePicker等類似的控件。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 国产精品1024在线永久免费| 欧美亚洲国产SUV| 亚洲卡一卡2卡三卡4麻豆| 亚洲综合色婷婷在线观看| 日本特黄特色AAA大片免费| 可以免费观看的毛片| 毛片免费观看网址| 国内精品99亚洲免费高清| 久久久久久亚洲Av无码精品专口 | 野花高清在线观看免费完整版中文| 永久免费av无码网站大全| 国产亚洲福利精品一区| 精品久久亚洲中文无码| 日韩亚洲人成网站| 成人免费一级毛片在线播放视频| 亚洲国产成人久久精品app| 免费A级毛片无码无遮挡内射| 在线观看午夜亚洲一区| a级毛片免费高清毛片视频| 日韩免费高清视频网站| 久久久亚洲欧洲日产国码二区| 久久99热精品免费观看牛牛| 亚洲综合另类小说色区色噜噜| 亚洲精品av无码喷奶水糖心| 亚洲免费人成视频观看| 久久亚洲国产成人亚| 一个人看的在线免费视频| 久久久久久亚洲精品不卡| 麻豆狠色伊人亚洲综合网站| 黄色网址在线免费| 亚洲精品第一国产综合精品| 免费精品无码AV片在线观看| 国产亚洲精品不卡在线| 无码人妻久久一区二区三区免费 | 日日麻批免费40分钟日本的| 日本亚洲欧洲免费天堂午夜看片女人员 | 特级毛片全部免费播放| 毛片大全免费观看| 亚洲成人激情小说| 毛色毛片免费观看| 国产免费人成视频尤勿视频|