Key Press Event - PullRequest
       16

Key Press Event

0 голосов
/ 20 февраля 2012

Я добавил форму в таблицу данных, используя код datagrid1.controls.add(frmnew).Проблема в том, что событие нажатия клавиши элементов управления в этой форме не запускается.Пожалуйста, дайте мне решение для этого.

Ответы [ 2 ]

0 голосов
/ 02 января 2013

Если вы хотите захватить это событие нажатия клавиши внутри элемента управления сеткой данных, вам необходимо подключить событие EditingControlShowing .Ниже приведен пример захвата события нажатия клавиши и допускается ввод только числовых данных в ячейку таблицы данных.

    /// <summary>
    /// Occurs when a control for editing a cell is showing
    /// </summary>
    /// <remarks>Capture key press to handle key entry in datagridview</remarks>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void dgDCAL_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        dgDCAL.EditingControl.KeyPress -= EditingControl_KeyPress;
        dgDCAL.EditingControl.KeyPress += EditingControl_KeyPress;
    }

    /// <summary>
    /// Handle datagridview cell keypress event
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
    {
        // Only allow 0-9, backspace, period and return key
        if (!Char.IsNumber(e.KeyChar) && 
            (int)e.KeyChar != 8 &&
            (int)e.KeyChar != 46 &&
            (int)e.KeyChar != 13) e.Handled = true;
    }
0 голосов
/ 28 февраля 2012

Если вы используете формы Windows:

Проверьте в файле .Designer.cs, что у вас есть обработчик событий.

Обработчик событий выглядит так:

this.datagrid1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.datagrid1_KeyPress);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...