4

vb.net で簡単な Web ブラウザーを作成しました。Enter キーを押すと、textbox1 の Web ページに移動するようにしました。唯一のことは、Enter キーを押すたびにビープ音が鳴ることです。e.Handled = True を使用してみましたが、何もしませんでした。キープレスのコードは次のとおりです

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

    If e.KeyCode = Keys.Enter Then
        e.Handled = True
        WebBrowser1.Navigate(TextBox1.Text)
    End If

End Sub

e.Handled を使えば、迷惑なビープ音が消えてしまうと思っていたのですが、そうではありませんでした。

4

1 に答える 1

7

KeyEventArgs必要なプロパティはHandledではなくSuppressKeyPressです。

すなわち

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Enter Then
        e.SuppressKeyPress = True
        WebBrowser1.Navigate(TextBox1.Text)
    End If

End Sub

最初のMSDNリンクから:

処理は、Windowsフォーム内のさまざまなコントロールによってさまざまに実装されます。ネイティブWin32コントロールをサブクラス化するTextBoxのようなコントロールの場合、キーメッセージが基になるネイティブコントロールに渡されるべきではないことを意味すると解釈されます。TextBoxでHandledをtrueに設定すると、そのコントロールはキープレスイベントを基になるWin32テキストボックスコントロールに渡しませんが、ユーザーが入力した文字は表示されます。

現在のコントロールがキーを押されないようにする場合は、SuppressKeyPressプロパティを使用します。

于 2012-09-16T03:29:27.303 に答える