Каков наилучший способ получить событие DropDown ComboBox в DataGridView - PullRequest
0 голосов
/ 12 января 2009

Допустим, у меня есть DataGridView, в котором я динамически создаю столбец ComboBox и добавляю к нему значения. Каков наилучший подход к отлову, когда пользователь нажимает кнопку раскрывающегося списка, чтобы отобразить раскрывающийся список? Если я просто использую CellClick для DataGridView, я получаю это событие, даже если пользователь фактически не нажимает кнопку раскрывающегося списка.

Пока что то, что я сделал, в основном унаследовано от DataGridViewComboBoxCell и переопределило свойство DropDownWidthProperty. В геттере я запускаю событие DropDown. Это работает, но чувствует себя очень "взломанным". Любые другие предложения?

 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 Ответ

2 голосов
/ 12 января 2009

попробуйте EditingControlShowing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...