2012-02-20 67 views
0

我使用代碼datagrid1.controls.add(frmnew)將表單添加到datagridview。問題在於,那種形式的控件的按鍵事件不會觸發。請給我一個解決方案。Key Press Event

+1

請在此問題上添加正確的標籤。 DataGridView是System.Windows.Forms命名空間中的.Net控件。這不是你在說什麼,所以請刪除該標籤。請爲平臺和語言添加標籤。這是.Net嗎?網?你在談論System.Web.UI.WebControls.DataGrid嗎? System.Windows.Controls.DataGrid?其他一些語言? – 2012-02-20 21:38:36

+1

向表單添加網格很有意義。將表單添加到網格非常模糊,需要代碼片段。 – 2012-02-22 12:37:42

回答

0

如果你正在使用Windows窗體:

檢查您了.Designer.cs文件,您有一個事件處理程序。

的事件處理程序是這樣的:

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

如果你想捕捉的DataGridView控件內部的按鍵事件,那麼你必須連接起來的情況下EditingControlShowing。以下是捕獲keypress事件的示例,並且只允許將數字數據輸入到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; 
    }