我想禁用ComboBox
单元格中DataGridview
中的项目。
我已经知道如何使用ComboBox
事件和DrawItem
事件禁用SelectedIndexChanged
中的项目,但是DataGridViewComboBoxCell
中没有类似的事件或DataGridViewComboBoxColumn
。
所以我的问题是,如何禁用ComboBox中DataGridView中的任何项目?
在ComboBox中,我可以修改需要禁用的项目显示,如下所示:
但是不能在DataGridView中执行相同的功能:
答案 0 :(得分:2)
我认为对您来说最简单的选择是处理EditControlShowing事件,然后处理ComboBoxes print(out)
[[['ele1'], ['ele4']], [['ele_2'], ['ele_5']], [['ele_3']]]
事件并执行您已经知道的操作。
在代码中设置SelectedIndexChanged
时,您可以执行以下操作:
DataGridview
然后实现如下处理程序:
dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing;
最后,void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
// Both of these lines are essential, otherwise you will be handling the same event twice in some conditions
combo.SelectedIndexChanged -= combo_SelectedIndexChanged;
combo.SelectedIndexChanged += combo_SelectedIndexChanged;
}
}
事件的处理方式与您想要的完全相同:
SelectedIndexChanged