3

私はdatagridview C#でセルの処理をしたいのですが、この特性はセルを押すとフォームが開きます。

C# には、処理を直接追加できるイベント (キープレス) がありません。

インターネットで検索した後、次の解決策を見つけました

 private void dGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        e.Control.KeyPress +=
        new KeyPressEventHandler(Control_KeyPress);
    }


           private void Control_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.A.ToString()) && Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.Z.ToString())) || (Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.D0.ToString()) && Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.D9.ToString()) || (Strings.Asc(e.KeyChar) >= 97 && Strings.Asc(e.KeyChar) > 122)))
            {
                ------
            }
      }

しかし、うまくいきません。デバッグでは、イベント dGridView_EditingControlShowing のコードが実行されましたが、Control_KeyPress 関数のコードは実行されません

アイデアをください

4

2 に答える 2

7

Form KeyPreviewプロパティをtrueに設定する必要があります。また、メインフォームでキーが押されたイベントを処理する必要があります。それはControl.KeyPressイベントだから

コントロールにフォーカスがあるときにキーが押されると発生します。( msdn )

public Form()
{
    InitializeComponent();
    this.KeyPreview = true;
    this.KeyPress += new KeyPressEventHandler(Control_KeyPress);
}

private void Control_KeyPress(object sender, KeyPressEventArgs e)
{
    //your code
}
于 2013-04-05T14:20:41.330 に答える
2

最初の答えを簡単にするために。1) フォームのプロパティに移動します 2) 'KeyPreview' を 'True' に設定します 3) フォームの Key Press イベントで:

private void Control_KeyPress(object sender, KeyPressEventArgs e)
{
    //your code
}
于 2013-10-29T04:06:41.167 に答える