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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM