DataGridViewComboBoxColumn -访问组合框以附加单击事件

本文关键字:单击 事件 访问 组合 DataGridViewComboBoxColumn | 更新日期: 2023-09-27 18:17:19

我想创建DataGridViewComboBoxColumn并附加到它的组合框Click事件(我想在点击时生成它的数据源)。

DataGridViewComboBoxColumn -访问组合框以附加单击事件

虽然我不知道为什么你需要Click事件的ComboBox控制,您可以使用EditingControlShowing event:

访问该组合框
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    //Check if the event is for your column, for example column 1
    if (this.dataGridView1.CurrentCell.ColumnIndex == 1)
    {
        var comboBox = e.Control as DataGridViewComboBoxEditingControl;
        comboBox.Click -= comboBox_Click;
        comboBox.Click += comboBox_Click;
    }
}
private void comboBox_Click(object sender, EventArgs e)
{
    var comboBox = sender as DataGridViewComboBoxEditingControl;
    //use comboBox here
}

但是你应该知道,你也可以在你的datagridview的CellClick事件中为你的列设置DataSource:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if(e.ColumnIndex==1 && e.RowIndex>-1)
    {
        //Check if the event is for your column, for example column 1
        var column = (DataGridViewComboBoxColumn)this.dataGridView1.Columns[e.ColumnIndex];
        //use column.DataSource   
    }
}

您应该知道的另一件重要的事情是,如果您设置的数据源不包含该列的某个单元格的值,则在呈现该列时将收到错误