63

Enterキーを押したときにテキストボックスからテキストをキャプチャしたい。WPF/visual studio 2010/.NET 4 を使用しています。タグで使用するイベント ハンドラーがわかりません。maskedtextbox についても同じことをしたいと思います。

4

5 に答える 5

111

KeyDown または KeyUp のいずれかです。

TextBox tb = new TextBox();
tb.KeyDown += new KeyEventHandler(tb_KeyDown);

static void tb_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        //enter key is down
    }
}
于 2010-09-20T14:40:14.720 に答える
23

WPF で PreviewKeyDown を使用することもできます。

<TextBox PreviewKeyDown="EnterClicked" />

またはC#で:

myTextBox.PreviewKeyDown += EnterClicked;

そして、添付されたクラスで:

void EnterClicked(object sender, KeyEventArgs e) {
    if(e.Key == Key.Return) {
        DoSomething();
        e.Handled = true;
    }
}
于 2012-02-15T20:01:19.493 に答える
7

KeyDownイベントは、ENTERやTABなどではなく、「通常の」入力キーによって標準のTextBoxまたはMaskedTextBoxでのみトリガーされます。

IsInputKeyメソッドをオーバーライドすることにより、ENTERのような特別なキーを取得できます。

public class CustomTextBox : System.Windows.Forms.TextBox
{
    protected override bool IsInputKey(Keys keyData)
    {
        if (keyData == Keys.Return)
            return true;
        return base.IsInputKey(keyData);
    }
}

次に、KeyDownイベントを次のように使用できます。

CustomTextBox ctb = new CustomTextBox();
ctb.KeyDown += new KeyEventHandler(tb_KeyDown);

private void tb_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
          //Enter key is down

          //Capture the text
          if (sender is TextBox)
          {
              TextBox txb = (TextBox)sender;
              MessageBox.Show(txb.Text);
          }
    }
}
于 2011-03-28T15:38:56.763 に答える