4

私はこのログインフォームをC#で作成しており、ユーザーが送信をクリックするか、Enter / Returnキーを押すとすぐに、すべてのデータを「送信」したいと思いました。

KeyEventsで少しテストしてきましたが、今のところ何も機能していません。

void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
}

上記のコードは、イベントが最初から機能するかどうかをテストするためのものです。「d」を押すと「d」が表示され、「8」を押すと「8」が表示されますが、Enterキーを押しても何も起こりません。

これは、Enterが実際には文字にバインドされていないためですが、バックスペースが表示されていたため、問題なく機能したため、Enterキーが登録されなかった理由について混乱しました。

したがって、問題は次のとおり です。Enter/ Returnキーをログに記録するにはどうすればよいですか?そして、なぜ今のようにキーの押下をログに記録しないのですか?

注:イベントをテキストボックスに入れました

tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress);

したがって、テキストボックスが選択されているときにEnterボタンが押されたときに起動します(これはもちろんずっとです)。おそらくそれはコードの実行と関係があります。

4

6 に答える 6

7

デフォルトのアクションとして定義されたボタンはありますか?

もしそうなら、そのコントロールはEnterキーをむさぼり食うでしょう。

そして多分それはあなたの答えです。送信ボタンでDefaultActionプロパティをtrueに設定する必要があります。

于 2010-03-20T16:43:54.497 に答える
0

Handled重要な部分を省略しました。条件に応じてプロパティを true または false に設定する必要があります...

void tbPassword_KeyPress(オブジェクト送信者, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
    if (e.KeyCode == Keys.Enter){
      // これは処理され、Windows メッセージ ポンプから削除されます
      e.Handled = true;
    }
}
于 2010-03-20T17:24:18.480 に答える
0

あなたのフォームに行きます...

基本的なフォームでこれを変更します

FormName.AcceptButton = ボタン名;

これにより、enter... のキー ログ ファイルが自動的に読み取られます。

ユーザーに同意ボタンを見せたくない場合は、これを行うことができます

buttonName.Visible = false; FormName.AcceptButton = ボタン名;

AcceptButton は、キーボードから Enter キーを自動的に読み取ります。

于 2010-11-28T19:46:34.783 に答える
0

代わりに KeyDown イベントを試してください。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("Enter");
    }
}
于 2010-03-20T16:53:09.983 に答える
0

おそらく、フォームの「AcceptButton」を使用して送信ボタンに設定する必要があります。それがあなたの本当の姿だと思います...

于 2010-03-20T16:56:13.043 に答える
0

これを試して

textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);

void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '\r')
    {
        MessageBox.Show("Enter Key Pressed", "Enter Key Pressed", MessageBoxButtons.OK);
    }
}
于 2010-03-20T17:44:54.403 に答える