Разрешить только определенные письма в ячейку DataGridiView - PullRequest
3 голосов
/ 07 февраля 2011

У меня есть датагридвью в форме.и в таблице есть 4 столбца - Нет, Ответ, Ключ, Результат.Нет, ключевые столбцы и столбцы результатов доступны только для чтения.это означает, что я не собираюсь вводить некоторые данные в эти столбцы.Но я введу значения в столбец Ответ.И значения могут быть только - A, B, C, D и E. Когда я нажимаю, например, клавишу X, я не хочу, чтобы X отображался в ячейке.я могу сделать это с текстовыми полями с событием нажатия клавиши.

Теперь вы можете сказать мне, как я могу использовать событие нажатия клавиши события ячейки Ответ столбца, чтобы реализовать его.

1 Ответ

3 голосов
/ 07 февраля 2011

Вы можете использовать событие EditingControlShowing для DataGridView, чтобы выполнить это.

В обработчике события этого события у вас есть доступ к Textbox, которое отображается при вводе данных в сетку данных.
Это означает, что на этом этапе вы можете прикрепить обработчик событий к событию KeyPress отображаемого текстового поля:

        private bool _firstTime = true;

        private void dataGridView1_EditingControlShowing( object sender, DataGridViewEditingControlShowingEventArgs e )
        {
            if( !_firstTime )
            {
                return;
            }

            _firstTime = false;

            var t = e.Control as TextBox;

            if( t != null )
            {
                t.KeyPress += OnKeyPress;
            }
        }

        private void OnKeyPress( object sender, KeyPressEventArgs e )
        {
            if( e.KeyChar != 'A' && e.KeyChar != 'B' && e.KeyChar != 'C' )
            {
                e.Handled = true;
            }
        }

Поскольку DataGridView всегда будет «совместно использовать» элемент управления текстовым полем для каждой ячейки в сетке, в которой используются текстовые поля, необходимо проверить, происходит ли событие в первый раз.
Если у вас есть другие столбцы в DataGridView, которые не только для чтения, и где вы хотите, чтобы пользователь также вводил данные, что не ограничено, тогда этот подход не будет таким подходящим. (Если вы не проверите в обработчике события OnKeyPress, к какому столбцу принадлежит текущая ячейка).

(Обратите внимание, что вам также придется рассмотреть строчные буквы a, b, c.

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