2016-05-09 8 views
0

私のデータベースで検索するには以下のコードを使用していますが、私のkeypressは変です。KeyPressが奇妙な動作をしていますが、ボタンのクリックがうまくいきます。VB.net

Private Sub txtSearch4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSearch4.KeyPress 
    Call btnSearch4_Click(sender, e) 
End Sub 

Private Sub btnSearch4_Click(sender As Object, e As EventArgs) Handles btnSearch4.Click 
    If SQL.HasConnection = True Then 
     SQL.ExecQuery("SELECT Customer, Product, Part_Number FROM Product WHERE (" & cmbType4.Text & " LIKE '%" & txtSearch4.Text & "%') ORDER BY Part_Number ASC") 

     If SQL.DBDS.Tables.Count > 0 Then 
      dgvProd.DataSource = SQL.DBDS.Tables(0) 
     End If 
    End If 
End Sub 

ビデオ:https://drive.google.com/open?id=0B7BUg5POgN7dZGVBTUpad1FWdDg 私はそれがすぐに立ち上げていないキーを押したときは、動画で見ることができるように。私はそれがこのようにしたい、私は単一のキーを押すと、それはあなたがボタンを押すのと同じように自動起動します。 ありがとうございます。

+0

あなたはそのようなイベントハンドラを直接呼び出すべきではありません。 'Button'の' PerformClick'メソッドを呼び出すか、または独自のメソッドにコードを置き、両方のイベントハンドラからそのコードを呼び出す必要があります。また、 'Call'キーワードの使用は無意味です。 – jmcilhinney

+0

@jmcilhinney私は、KeyDownとKeyPressにコード全体を入れて同じことをやろうとしました。 performclickを試してみても同じです。 – Foxseiz

+0

私はあなたの問題を解決するのではなく、コードを正しく書くことについて話しています。それが答えではなくコメントを投稿した理由です。 – jmcilhinney

答えて

1

代わりにKeyDownイベントを使用してください。このイベントは、キーボードのキーを押すとすぐに発生しますが、キーが押されている間は文字キーのKeyPressイベントが発生し、ユーザーがそれを解放します。

 
Private Sub txtSearch4_KeyDown(sender As Object, e As KeyPressEventArgs) Handles txtSearch4.KeyDown 
    doSearch() 
End Sub 

Private Sub btnSearch4_Click(sender As Object, e As EventArgs) Handles btnSearch4.Click 
    doSearch() 
End Sub 

Private Sub doSearch() 
    If SQL.HasConnection = True Then 
     SQL.ExecQuery("SELECT Customer, Product, Part_Number FROM Product WHERE (" & cmbType4.Text & " LIKE '%" & txtSearch4.Text & "%') ORDER BY Part_Number ASC") 

     If SQL.DBDS.Tables.Count > 0 Then 
      dgvProd.DataSource = SQL.DBDS.Tables(0) 
     End If 
    End If 
end sub 
+0

私はKeyDownを使い、同じことをしました。あなたがビデオで見ることができるように、私が最初のeを押すと、KeyDownは反応しません。 https://drive.google.com/open?id=0B7BUg5POgN7dNmxoTXhzYjhmWHM – Foxseiz

+0

何らかの理由により、動画に何も表示されませんでした。 さらなる調査を行う前に、@jmcilhinneyが指摘したようにClickイベントを直接呼び出さないようにすることをお勧めします。 コードをどのように表示するかについて、私の回答を編集しました。問題に直接対処するわけではありませんが、 は、doSearchプロシージャにブレークポイントを設定して呼び出されたかどうかを確認するのに役立ちます。 –

+0

私たちは実際に見ることができないビデオは必要ありません。コードにブレークポイントを設定して、キーを押したときにヒットしたかどうかを確認しましたか?もしそうでなければ、そうする。 – jmcilhinney

関連する問題