1

シンプルなログインフォームがあり、accept buttonプロパティを"OK"ボタンに設定し、テキストボックス "username"を設定して、処理を行うためにKeyDownイベントを設定しました。Okはfalseに設定されています。

btnOk.Enbled = false;  
this.AcceptButton = btnOk;
txtUsername.KeyDown += new KeyEventHandler(KeyDownHandle);

ユーザー名のテキストボックスでEnterキーを押すと、処理を行ってから、[承認]ボタンをtrueに設定します。

private void KeyDownHandle(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // some processing
        btnOk.Enabled = true;
        txtPassword.Focus();
    }
}

次に、パスワードテキストボックスにパスワードを入力してEnterキーを押すと、「OK.Click」がトリガーされます。

しかし、問題は「ボタンを受け入れる」ためにkeyDownが機能しないことです。
これを解決するために何ができますか?

編集:acceptButtonを "none"に設定すると問題が解決したと言いたいのですが、それは私が探しているものではありません。

4

1 に答える 1

4

this.AcceptButton = btnOkコンストラクターから削除して (私が思うに) に入れて みませんか? そうすればKeyDownHandlerbtnOkEnter キーが有効になり、ユーザー名が挿入された後にのみ受け入れられます。したがって、コードは次のようになります。

btnOk.Enabled = false;
txtUsername.KeyDown += new KeyEventHandler(textBox1_KeyDown);
btnOk.Click += new EventHandler(button1_Click);


private void KeyDownHandle(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // some processing
        btnOk.Enabled = true;
        this.AcceptButton = btnOk;
        txtPassword.Focus();
    }
}
于 2013-02-24T14:48:17.733 に答える