2012-02-20 6 views
0

コードdatagrid1.controls.add(frmnew)を使用して、データグリッドビューにフォームを追加しました。問題は、そのフォームのコントロールの重要なプレスイベントは発砲していないということです。私にこれを解決してください。キープレスイベント

+1

この質問に正しいタグを追加してください。 DataGridViewは、System.Windows.Forms名前空間の.Netコントロールです。それはあなたが話していることではないので、そのタグを削除してください。プラットフォームと言語のタグを追加してください。これはネットですか?ウェブ?あなたはSystem.Web.UI.WebControls.DataGridについて話していますか? System.Windows.Controls.DataGrid?いくつかの他の言語ですか? –

+1

フォームにグリッドを追加することは意味があります。グリッドにフォームを追加するのは非常に暗いです。コードスニペットが必要です。 –

答えて

0

あなたは、Windowsフォームを使用している場合:あなたは、イベントハンドラを持っているあなたの.Designer.csファイルに

チェックを。

イベントハンドラは次のようになります。あなたは、DataGridViewコントロールの内部でそのKeyPressイベントをキャプチャする場合は、あなたがイベントEditingControlShowingを配線する必要があり

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

。ここでは、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; 
    } 
関連する問題