本文介紹如何在 WinForms 中使用 DataGridViewComboBoxColumn
實現下拉列表功能,并通過事件響應來處理用戶的選擇。以下是實現步驟和示例代碼。
1. 效果展示
該程序的主要功能是展示如何在 DataGridView
中插入下拉列表,并在選擇某一項時觸發事件。
2. 代碼實現
使用 DataGridViewComboBoxColumn
控件來創建下拉列,下面是實現代碼。該示例演示了在下拉框中選中某項時觸發事件并顯示選中的內容。代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace DataGridViewComboBoxExample
{public partial class Form1 : Form{// 構造函數public Form1(){InitializeComponent();}// 窗體加載事件private void Form1_Load(object sender, EventArgs e){// 創建一個 DataGridViewComboBoxColumn 控件DataGridViewComboBoxColumn colShow = new DataGridViewComboBoxColumn();colShow.Name = "spaceType"; // 列名稱colShow.HeaderText = "空間類型"; // 列頭文本colShow.Width = 200; // 設置列寬colShow.Items.Add("選項一"); // 向下拉框添加選項colShow.Items.Add("選項二"); // 向下拉框添加選項colShow.DisplayIndex = 0; // 設置列的顯示位置(第一列)// 將列插入到 DataGridView 的第一列dataGridView1.Columns.Insert(0, colShow);// 設置單擊時直接顯示下拉框,而非雙擊dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;// 添加三行數據dataGridView1.Rows.Add(); // 添加第一行dataGridView1.Rows.Add(); // 添加第二行dataGridView1.Rows.Add(); // 添加第三行// 為每一行的第一個單元格(即ComboBox列)設置默認值dataGridView1.Rows[0].Cells[0].Value = "選項一"; // 第一行dataGridView1.Rows[1].Cells[0].Value = "選項二"; // 第二行dataGridView1.Rows[2].Cells[0].Value = "選項一"; // 第三行}// 按鈕點擊事件:設置第一行第一列的值為 "選項二"private void button1_Click(object sender, EventArgs e){dataGridView1.Rows[0].Cells[0].Value = "選項二";}// 處理下拉框選項變化的事件public void comboBox_SelectedIndexChanged(object sender, EventArgs e){ComboBox comboBox = (ComboBox)sender;// 彈出消息框,顯示選中的項MessageBox.Show(string.Format("選中了:{0}", comboBox.Text));// 注銷事件,避免多次觸發comboBox.SelectedIndexChanged -= new EventHandler(comboBox_SelectedIndexChanged);}// 在用戶編輯單元格時觸發private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e){// 檢查當前編輯的控件是否是 ComboBoxif (e.Control is ComboBox comboBox){// 為下拉框控件注冊事件處理器,當選項改變時觸發comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);}}}
}
3. 代碼解析
-
創建
DataGridViewComboBoxColumn
列
在Form1_Load
方法中,我們創建了一個DataGridViewComboBoxColumn
類型的列,添加了 "選項一" 和 "選項二" 兩個選項。并通過dataGridView1.Columns.Insert(0, colShow)
將該列插入到DataGridView
的第一列。 -
設置編輯模式
我們設置dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter
,這樣可以在單擊單元格時直接彈出下拉框,而不需要雙擊。 -
按鈕點擊事件
button1_Click
方法通過代碼設置DataGridView
中第一行第一列的值為 "選項二"。這使得在按鈕點擊后,下拉框會選中該項。 -
處理下拉框選項變化事件
在comboBox_SelectedIndexChanged
方法中,我們處理了下拉框項變化時的事件。每當選中不同的項時,彈出一個消息框顯示選中的項。為了避免事件被多次觸發,我們在事件處理結束后注銷了該事件。 -
為下拉框控件注冊事件
在dataGridView1_EditingControlShowing
事件中,我們檢查當前編輯控件是否為ComboBox
類型,如果是,則注冊SelectedIndexChanged
事件處理器,這樣可以確保每次進入下拉框時都會觸發選項變化事件。
4. 總結
通過使用 DataGridViewComboBoxColumn
,我們可以輕松地在 DataGridView
中實現下拉列功能。而且通過 EditingControlShowing
事件,我們可以為下拉框添加自定義的事件處理,使得我們可以響應用戶的選擇并執行相關操作。
源碼地址:https://download.csdn.net/download/weixin_44643352/90085936