假设我有一个DataGridView,我在其中动态构建一个ComboBox列并为其添加值。当用户单击下拉按钮以显示下拉列表时,捕获的最佳方法是什么。如果我只是在DataGridView上使用CellClick,即使用户实际上没有点击下拉按钮,我也会得到该事件。
到目前为止,我所做的基本上是从DataGridViewComboBoxCell继承并覆盖了DropDownWidthProperty。在getter中我触发DropDown事件。这有效,但感觉非常“hacky”。还有其他建议吗?
using System;
using System.Windows.Forms;
public class DataGridViewEventComboBoxCell : DataGridViewComboBoxCell
{
private bool dropDownShown = false;
public event EventHandler BeforeDropDownShown;
private void OnBeforeDropDownShown()
{
if (this.BeforeDropDownShown != null)
{
this.BeforeDropDownShown(this, new EventArgs());
}
}
public override int DropDownWidth
{
get
{
if (!dropDownShown) //this boolean is here because I only need to trap it the very first time
{
this.OnBeforeDropDownShown();
dropDownShown = true;
}
return base.DropDownWidth;
}
set
{
base.DropDownWidth = value;
}
}
}
答案 0 :(得分:2)
尝试EditingControlShowing