在前面的一天我添加了一个自定义的textbox列,没有用datagridview的自带列,那种方法比较灵活,添加下拉列表列是一样的道理,有兴趣的可以点下面的链接去看一下。
datagridview添加自定义的textbox列
今天来研究下,怎么用datagridview自带的combox列。
private void Form1_Load(object sender, EventArgs e)
{
//绑定数据
GetData();
int rows = dataGridView1.Rows.Count;
DataGridViewComboBoxColumn px = new DataGridViewComboBoxColumn();
px.Items.Add("上衣");
px.Items.Add("裤子");
px.Items.Add("鞋");
px.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
px.DefaultCellStyle.NullValue = "裤子";
dataGridView1.Columns.Add(px);
}
给datagridview添加一个EditingControlShowing事件
ComboBox mycb = new ComboBox();
int therowindex = -1;
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 4 && dataGridView1.CurrentCell.RowIndex != -1)
{
mycb = (ComboBox)e.Control; //保存当前的事件源。为了触发事件后。在取消
mycb.SelectedIndexChanged += Mycb_SelectedIndexChanged;
therowindex = dataGridView1.CurrentCell.RowIndex;
}
}
private void Mycb_SelectedIndexChanged(object? sender, EventArgs e)
{
mycb = (ComboBox)sender;
//这里我比较懒,就直接弹出它的值来
MessageBox.Show(mycb.Text);
//处理完以后,如果换了combox,
//就要把它原来的事件去掉
//否则会出奇怪的问题
if (therowindex != dataGridView1.CurrentCell.RowIndex)
{
mycb.SelectedIndexChanged -= new EventHandler(Mycb_SelectedIndexChanged);
}
}
页面更新:2024-04-01
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号