1. 程式人生 > 其它 >C# DataGridView中下拉列表框DataGridViewComboboxColumn的實現

C# DataGridView中下拉列表框DataGridViewComboboxColumn的實現

 

效果圖

 

 在winfrom中拖入一個DataGridView控制元件

private void Form1_Load(object sender, EventArgs e)
        {
            DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
            column.Name = "ID";
            column.DataPropertyName = "id";//對應資料來源的欄位
            column.HeaderText = "
ID"; column.Width = 80; this.dataGridView1.Columns.Add(column); DataGridViewComboBoxColumn column1 = new DataGridViewComboBoxColumn(); column1.Name = "Name"; column1.DataPropertyName = "Name";//對應資料來源的欄位 column1.HeaderText = "姓名"; column1.Width
= 80; this.dataGridView1.Columns.Add(column1); List<string> ListData = new List<string> { "張三", "里斯", "王六" }; column1.DataSource = ListData; //這裡需要設定一下combox的itemsource,以便combox根據資料庫中對應的值自動顯示資訊 //繫結資料來源 dataGridView1.DataSource = CreateTable(); }

 

 

 

private DataTable CreateTable()
        {
            DataTable dt = new DataTable();                         //建立一個空表
            DataColumn column =new DataColumn();                    //建立一個空列     
            column.DataType = System.Type.GetType("System.Int32");
            column.ColumnName = "id";
            dt.Columns.Add(column);
            column = new DataColumn();
            column.DataType = Type.GetType("System.String");
            column.ColumnName = "Name";
            dt.Columns.Add(column);
            DataRow row = dt.NewRow();                              //建立行
            row["id"] = 0;
            row["Name"] = "張三";
            dt.Rows.Add(row);                                       //顯示
            return dt;

        }

 

當想修改Combox列的資料時,或是想通過Combox的改變做文章的要用到dataGridView1_EditingControlShowing這個事件,即編輯dataGriview中的資料就會觸發該事件

  private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox combo = e.Control as ComboBox;
            if (combo != null)
            {
                combo.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
            }

        }

 

   private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox combo = sender as ComboBox;
            string selectedItem = combo.Text;//拿到選擇後的值
        }

 

 

 

 

 

 

 

C# winform中datagridview內建的Combobox在點選時需要點選兩下才彈出下拉框的解決方法:

將DataGridView屬性  EditMode 為 EditOnEnter!

轉 : https://www.cnblogs.com/ZLGBloge/p/4415155.html