1

C#WindowsフォームアプリケーションにTextBoxがあります。TextBoxusingTextChanged()イベントのユーザータイプとして提案を使用しています。が呼び出されるAutoCompleteResoureたびに動的に作成しています。TextChanged()問題は次のとおりです。TextBoxに「j」と入力すると、3つの結果が表示され、2番目の提案は行きたい場所です。キーボードの下矢印キーを押して2番目の提案に移動すると、すべての提案が削除され、TextBoxのテキストが最初の提案に変更されます。これは、キーボードを使用して最初の提案を下回ることができないことを意味します。これは、下キーを押すと、TextBox内のテキストが提案に置き換えられ、TextChanged()イベントが呼び出され、そのために他の提案がないためです。キーボードを使用してすべての提案を確認するにはどうすればよいですか?に設定AutoCompeleteModeしましたSuggest。これがコードです。

private void searchTb_TextChanged(object sender, EventArgs e){
     AutoCompleteStringCollection resource = new AutoCompleteStringCollection();
     string searchTerm = (sender as TextBox).Text;    
     searchTb.AutoCompleteCustomSource = getResource(searchTerm);
}

Key.Downユーザーが下矢印キーを押したときにイベントを消費しようとしましたが、機能しませんでした。

4

2 に答える 2

1

これはうまくいくはずです..

//In KeyUp or Keypress or KeyDown Event
if keypress == DownArrow or UpArrow
  //Unhook TextChanged event
else
  //hook TextChanged event

こちらも一度ご覧くださいlink。【なんか関係ある】

于 2012-11-27T12:13:49.063 に答える
0

TextChanged イベントを使用しないでください。TextChanged イベント内にあってはなりません。一度だけ割り当てる必要があります...代わりに、このコードを Form_load で使用してください

private void Form1_Load(object sender, EventArgs e)
{
     AutoCompleteStringCollection resource = new AutoCompleteStringCollection();
     string searchTerm = (sender as TextBox).Text;    
     searchTb.AutoCompleteCustomSource = getResource(searchTerm);
}

これを試してみてください..うまくいくことを願っています

于 2013-07-04T16:32:41.310 に答える