О событии элемента управления datagridview - PullRequest
1 голос
/ 26 февраля 2011

Я разработал приложение для фильтрации просмотра данных. И я использовал datagridview dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) событие для фильтрации. Но я хочу обработать это на событии нажатия клавиши для ячейки просмотра данных. Но я не получаю такого рода мероприятия.

событие datagridview должно произойти на каждой клавише ..

Так кто-нибудь может мне сказать, какое событие я должен использовать для просмотра данных?

пожалуйста, помогите мне ... Thanx

1 Ответ

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

Событие DataGridView.KeyPress будет , а не , когда пользователь вводит данные в определенной ячейке.Если вы хотите получать уведомления при каждом нажатии клавиши во время редактирования содержимого в ячейке, у вас есть два варианта:

  1. Обрабатывать событие KeyPress, которое вызывается непосредственно элементом управления редактированием.сам (к которому вы можете получить доступ, используя событие EditingControlShowing).

    Например, вы можете использовать следующий код:

    public class Form1 : Form
    {
        public Form1()
        {
            // Add a handler for the EditingControlShowing event
            myDGV.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(myDGV_EditingControlShowing);
        }
    
        private void myDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            // Ensure that the editing control is a TextBox
            TextBox txt = e.Control as TextBox;
            if (txt != null)
            {
                // Remove an existing event handler, if present, to avoid adding
                // multiple handler when the editing control is reused
                txt.KeyPress -= new KeyPressEventHandler(txt_KeyPress);
    
                // Add a handler for the TextBox's KeyPress event
                txt.KeyPress += new KeyPressEventHandler(txt_KeyPress);
            }
        }
    
        private void txt_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Write your validation code here
            // ...
    
            MessageBox.Show(e.KeyChar.ToString());
    
        }
    }
    
  2. Создать пользовательский класс, которыйнаследует от стандартного DataGridView элемента управления и переопределяет его ProcessDialogKey метод .Этот метод предназначен для обработки каждого ключевого события, даже тех, которые
    происходят в элементе управления редактированием.Вы можете обрабатывать нажатия клавиш внутри этого переопределенного метода или вызывать собственное событие, к которому вы можете прикрепить отдельный метод-обработчик.

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