0

Visual Studio 2010 の私の winforms アプリケーションでは、

ボタンと 2 つのコンボボックス ( combobox1combobox2) があります。

ボタンにコードを追加して、最初のコンボボックス (combobox1) に以前に入力したデータをクリアし、それにフォーカスを設定しました。

最初のコンボボックス( combobox1)のキーアップイベントで、エンターキーをチェックしました。押された場合、フォーカスは次のコンボボックス( combobox2)に移動します。

しかし、私の問題は、ボタンを押すと(フォーカスがボタンにあるときにEnterキーを押すと)、フォーカスが最後(2番目)のコンボボックス(combobox2)に直接移動することです。

ボタンのみで入力したのに、combobox1 の Keyup イベントが自動的に発生する

どうすればこれを解決できますか?

私のコードは以下のとおりです

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    'code to perform database action
    Me.ComboBox1.Focus()
End Sub

Private Sub ComboBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyUp
    If e.KeyCode = Keys.Enter Then
        If Me.ComboBox1.SelectedText = String.Empty Then
            ComboBox2.Focus()
        End If
    End If
End Sub

アップデート

ボタンをクリックしても問題は発生しませんが、フォーカスがボタンにあるときにEnterキーを押すと、ボタンクリックイベントを発生させるために問題が発生します。

4

1 に答える 1

2

これを修正する最も簡単な方法は、ComboBox1をキーアップではなくKeyDownハンドラーに変更することです。

それが発生する理由は、一連のイベントです。

  • ボタンをキーダウン(Enterキー)
  • コードが実行され(Button2_Click)、フォーカスがComboBox1に移動します
  • ComboBox1のキーアップが発生します
  • コードが実行され(ComboFox1_KeyUp)、フォーカスがComboBox2に移動します

編集: より簡単な説明:でEnterキーを押すと、button1OnKeyDownハンドラーが実行されます。エンターキーを離すまでに、フォーカスがにCombobox1なり、OnKeyUpハンドラーが実行されます。

于 2013-02-23T12:24:51.733 に答える