在DataGridView中获取ComboBox的DropDown事件的最佳方法是什么

时间:2009-01-12 18:58:22

标签: c# events datagridview

假设我有一个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;
        }
    }


}

1 个答案:

答案 0 :(得分:2)

尝试EditingControlShowing