c# - DataGridViewComboBoxColumn - 访问 ComboBox 以附加单击事件

标签 c# winforms datagridview datagridviewcombobox

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

最佳答案

虽然我不知道为什么需要该 ComboBox 控件的 Click 事件, 您可以使用 EditingControlShowing 事件访问该组合框:

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

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

关于c# - DataGridViewComboBoxColumn - 访问 ComboBox 以附加单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33077863/

相关文章:

c# - 使用 Datagridview C# 更新 MySql 数据库

vb.net - 使用 vb.net 重命名 DataGridView 控件中的列标题

c# - datagridView编辑

c# - File.Exists 无法在网络驱动器上工作

c# - 您如何将 GAC 程序集用作 csc.exe 的引用?

c# - 试图回避单例/上帝/经理类。不过不确定我应该如何维持功能

c# - Windows 窗体 C# 中的值不能为空异常

c# - 处理 ImageList

c# - 无法连接到任何指定的 MySQL 主机登录表单

c# - MySqlContext如何将查询写入变量