datagridview添加下拉列表列及添加选择事件

在前面的一天我添加了一个自定义的textbox列,没有用datagridview的自带列,那种方法比较灵活,添加下拉列表列是一样的道理,有兴趣的可以点下面的链接去看一下。

datagridview添加自定义的textbox列

今天来研究下,怎么用datagridview自带的combox列。

效果如下:

1、首先来看下如何添加下拉列表列

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);
}

2、如何给下拉列表添加选择事件呢?

给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

标签:事件   列表   绑定   上衣   裤子   灵活   道理   奇怪   细节   效果

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top