本文介绍如何在 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)
{
// 检查当前编辑的控件是否是 ComboBox
if (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