对于C#的软件工程师来说使用DataGridView控件的频率是不低的,在DataGridView中加入按钮、下拉菜单也是比较频繁,那么如何对加入的按钮、下拉菜单添加事件和事件处理呢?
下面的Demo是针对下拉菜单如何添加和处理事件
该Demo实现下拉切换班级,实现班主任和名次自动刷新功能,班级下拉选择后触发事件。
主界面
直接编辑列完成的四列,第二列的班级为DataGridViewComboBoxColumn类型,在Items集合中添加四个班级,如下图
代码:
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
using System.Data;
usingSystem.Drawing;
using System.Linq;
using System.Text;
usingSystem.Windows.Forms;
namespace 各种Demo
{
public partial class DataGridView中ComboBox下拉更改事件 : Form
{
/// <summary>
/// 班级
/// </summary>
ComboBox gv_bjType;
public DataGridView中ComboBox下拉更改事件()
{
InitializeComponent();
}
private void DataGridView中ComboBox下拉更改事件_Load(object sender, EventArgs e)
{
for (int i = 0; i < 6; i++)
{
dgv.Rows.Add();
dgv[0,i].Value=i+1;//班级为DataGridViewComboBoxColumn类型,值在编辑列的Items中写好
}
}
private voiddgv_EditingControlShowing(object sender,DataGridViewEditingControlShowingEventArgs e)
{
//判断相应的列
if (dgv.CurrentCell.ColumnIndex ==1 && dgv.CurrentCell.RowIndex !=-1)
{
gv_bjType = e.Control asComboBox;
//每次注册事件的时候先移除事件,避免不断被递归调用
gv_bjType.SelectedIndexChanged-= new EventHandler(gv_bjType_SelectedIndexChanged);
gv_bjType.SelectedIndexChanged+= new EventHandler(gv_bjType_SelectedIndexChanged);
}
}
private void gv_bjType_SelectedIndexChanged(objectsender, EventArgs e)
{
switch (gv_bjType.Text)
{
case "计应091班":
dgv[2,dgv.CurrentCell.RowIndex].Value = "1班老师";
dgv[3,dgv.CurrentCell.RowIndex].Value = "第一名";
break;
case "计应092班":
dgv[2,dgv.CurrentCell.RowIndex].Value = "2班老师";
dgv[3,dgv.CurrentCell.RowIndex].Value = "第二名";
break;
case "计应093班":
dgv[2,dgv.CurrentCell.RowIndex].Value = "3班老师";
dgv[3,dgv.CurrentCell.RowIndex].Value = "第三名";
break;
default:
dgv[2,dgv.CurrentCell.RowIndex].Value = "4班老师";
dgv[3,dgv.CurrentCell.RowIndex].Value = "第四名";
break;
}
}
}
}
效果
其余事件同理.