如何区分DataGridViewComboBoxColumn单元格点击事件
How to Differentiate DataGridViewComboBoxColumn Cell Click Events
我有一个 DataGridViewComboBoxColumn,它在单击单元格时触发一个事件,最终显示一个对话框。这很好用,但我的问题是我希望仅在用户未单击箭头以显示下拉列表时触发。现在,单击文本和单击此箭头之间没有区别。我该如何区分? (我知道 CellContentClick 事件,但这可能需要大量的点击才能真正触发。)
(在我令人惊叹的插图中,我希望绿色触发事件,而红色仅具有其正常功能。)
您可以使用 EditingControlShowing
事件:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e){
if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl)){
//The green is clicked
}
}
检测DataGridViewComboBoxCell
中的下拉按钮区域是否有鼠标点击,可以使用如下代码:
private void productsDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
var field = typeof(DataGridViewComboBoxCell).GetField("mouseInDropDownButtonBounds",
System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
var mouseInDropDownButtonBounds = field.GetValue(null);
}
您可以查看 DataGridViewComboBoxCell
的 source code 以详细了解它如何计算下拉按钮绑定。
我有一个 DataGridViewComboBoxColumn,它在单击单元格时触发一个事件,最终显示一个对话框。这很好用,但我的问题是我希望仅在用户未单击箭头以显示下拉列表时触发。现在,单击文本和单击此箭头之间没有区别。我该如何区分? (我知道 CellContentClick 事件,但这可能需要大量的点击才能真正触发。)
(在我令人惊叹的插图中,我希望绿色触发事件,而红色仅具有其正常功能。)
您可以使用 EditingControlShowing
事件:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e){
if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl)){
//The green is clicked
}
}
检测DataGridViewComboBoxCell
中的下拉按钮区域是否有鼠标点击,可以使用如下代码:
private void productsDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
var field = typeof(DataGridViewComboBoxCell).GetField("mouseInDropDownButtonBounds",
System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
var mouseInDropDownButtonBounds = field.GetValue(null);
}
您可以查看 DataGridViewComboBoxCell
的 source code 以详细了解它如何计算下拉按钮绑定。