Как проверить правильность ввода в элемент управления для редактирования ячейки в DataGridView? - PullRequest
0 голосов
/ 16 апреля 2010

Похоже, что единственный способ перехватить события нажатия клавиш в ячейке элемента управления DataGridView для проверки ввода пользователя по мере их ввода - это использовать событие OnEditControlShowing элементов управления DataGridView, подключить метод к элементу управления редактирования (например, .Control) событие нажатия клавиши и выполнить некоторую проверку.

Моя проблема в том, что я создал кучу пользовательских классов столбцов DataGridView с их собственными типами ячеек. Эти ячейки имеют свои собственные элементы управления для редактирования (такие как DateTimePickers и Numeric или Currency box).

Я хочу провести некоторую числовую проверку для тех ячеек, в которых в качестве элементов управления для редактирования используются числовые текстовые поля валют, но не все другие типы ячеек.

Как определить, в переопределении «OnEditControlShowing» объекта DataGridView, нуждается ли конкретный элемент редактирования в некоторой числовой проверке?

1 Ответ

1 голос
/ 16 апреля 2010

Если я правильно понимаю ваш вопрос, вы хотите подключить событие, основываясь на типе элемента управления редактированием . Если так, то это то, что я бы сделал:

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        //Remove any KeyPress events already attached
        e.Control.KeyPress -= new KeyPressEventHandler(FirstEditingControl_KeyPress);
        e.Control.KeyPress -= new KeyPressEventHandler(SecondEditingControl_KeyPress);

        //Choose event to wire based on control type
        if (e.Control is NumericTextBox)
        {
            e.Control.KeyPress += new KeyPressEventHandler(FirstEditingControl_KeyPress);
        } else if (e.Control is CurrencyTextBox)
        {
            e.Control.KeyPress += new KeyPressEventHandler(SecondEditingControl_KeyPress);
        }
    }

Из опыта я узнал, что нужно связывать любые возможные события при редактировании элементов управления в DataGridView, поскольку они будут использовать один и тот же элемент управления для нескольких ячеек.

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