テキストボックスのキーコードを確認していますが、ユーザーがを押したときに特定のタスクを実行したいと考えていますEnter
。
完全に機能していますが、現在実行しようとしているタスクは、通常、マウスクリックを使用して実行されます。したがって、そのタスク(a FolderBrowserDialog
)のOKで、ダイアログコントロールを呼び出し続けます。
奇妙なことに、デバッガーがifブランチに表示しますが、たとえば、表示されますが{KeyData = LButton|MButton|Back}
、KeyValue
それでも13です。
テキストボックスが最後のエントリを記憶している可能性があると思います...本当ですか?
トラブルシューティングでは、ブール変数を追加したので、それがtrueの場合にのみFolderBrowserにアクセスし、ブラウズ後にテキストボックスにスペースを追加および削除し、テキストボックスをクリアしようとしました...事態はさらに悪化します。
私は準無限ループに入っているように見えましたが、多くの「OK」の後に消えてしまい、ステップスルーすると、テキストボックスに入力するすべての文字について、4〜5ラウンドを費やしていることがわかりました。 CheckKeys。理由がわかりません...またはそれを修正する方法。
「e.Handled」を追加しましたが、ダメでした。
コードは次のとおりです。
private void txtDir_TextChanged(object sender, EventArgs e)
{
this.txtDir.KeyUp += new System.Windows.Forms.KeyEventHandler(CheckKeys);
}
private void CheckKeys(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (sender == txtDir && txtDir.Text != "" && System.IO.Directory.Exists(txtDir.Text))
{
btnBrowse_Click(this, e);
}
}
}
なぜ私はこのチェックを何度も経験するのですか?別のテストを追加できますか?私は何か間違ったことをしていますか?(フォームまたはテキストボックスのデフォルトアクションとして何も設定されていません...)
ありがとうございました。