DataGridViewComboBoxColumn - 访问 ComboBox 以附加点击事件
DataGridViewComboBoxColumn - access ComboBox to attach click event
我想创建 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
}
但是您应该知道,您也可以在数据网格视图的 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
}
}
您应该知道的另一件重要事情是,如果您设置的数据源不包含此列的其中一个单元格的值,您将在呈现该列时收到错误消息。
我想创建 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
}
但是您应该知道,您也可以在数据网格视图的 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
}
}
您应该知道的另一件重要事情是,如果您设置的数据源不包含此列的其中一个单元格的值,您将在呈现该列时收到错误消息。