按键事件

本文关键字:事件 | 更新日期: 2023-09-27 18:25:13

我使用代码datagrid1.controls.add(frmnew)向数据网格视图添加了一个表单。问题是,该形式的控件的按键事件没有触发。请给我一个解决方案。

按键事件

如果您使用的是windows窗体:

请在.Designer.cs文件中检查是否有事件处理程序。

事件处理程序如下所示:

this.datagrid1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.datagrid1_KeyPress);

如果要在datagridview控件内捕获按键事件,则必须连接事件EditingControlShowing。下面是一个捕获按键事件并只允许在datagridview单元格中输入数字数据的示例。

    /// <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;
    }