当前位置: 首页 > news >正文

实现 DataGridView 下拉列表功能(C# WinForms)

本文介绍如何在 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

http://www.lryc.cn/news/500629.html

相关文章:

  • 使用Java创建RabbitMQ消息生产者的详细指南
  • 【LC】160. 相交链表
  • Spark架构及运行流程
  • Linux安装Python2.7.5(centos自带同款)
  • 上传ssh公钥到目标服务器
  • 【LLMs】用LM Studio本地部署离线大语言模型
  • SpringBoot下类加入容器的几种方式
  • 【Mysql】忘记Root密码后如何不影响数据进行重置密码
  • 宝塔内设置redis后,项目以及RedisDesktopManager客户端连接不上!
  • 一文了解模式识别顶会ICPR 2024的研究热点与最新趋势
  • 【深度学习】深刻理解BERT
  • 一种基于通义千问prompt辅助+Qwen2.5-coder-32b+Bolt.new+v0+Cursor的无代码对话网站构建方法
  • Java版-图论-最小生成树-Kruskal算法
  • 计算机网络知识总结
  • 普通算法——欧拉筛
  • 【知识科普】DNS(域名解析服务)深入解读
  • 数据结构第一弹-数据结构在不同领域的应用
  • 如何创建基于udp的客户端和服务端
  • ThinkPHP框架审计--基础
  • Java8 CompletableFuture异步编程
  • Java的Mvc整合Swagger的knife4框架
  • 分阶段构建在复杂系统中的应用:以推荐系统为例
  • 2024年12月9日历史上的今天大事件早读
  • 快捷构建AI大模型,源码自取可直接运行
  • 怎么为开源项目做贡献提PR?
  • 如何在 JavaScript 中设置定时器?
  • 【学习路线】Java
  • [GYCTF2020]Easyphp
  • JavaScript 数组的高级用法与最佳实践
  • 通信协议 http、tcp、udp