2012-03-11 15 views
5

私はc#winforms visual studio 2010を使用しています。私は、オートコンプリートデータソースとしてリストを持つテキストボックスを持っています。オートコンプリートがクリックされたときにイベントが見つからないことを除いて、すべてが問題ありません。私はオートコンプリートの行ヒットと、選択された行の値を持つテキストボックスを埋める以外の何かをしたい。出来ますか?これはかなりハックであれば、私はこれが動作するように見える簡単なテストを実行しましたC#Autocomplete Texbox Clickイベント

どうもありがとう

+1

いいえ、イベントは発生せず、Windows自身が通知を生成しません。副作用TextChangedしか見ることができません。背景情報はSHAutoCompleteのMSDN記事にあります –

答えて

3

は、私を気にしません。 TextBoxを継承したUserControlを作成しました。 TextChangedイベントの前に発生するKeyDownイベントを監視し、ビットをtrueに切り替え、TextChangedイベントのビットを確認し、イベント(AutoCompleteUsed)をスローして監視クラスに自動完了機能が使用されたことを通知します。

public partial class MyTextBox : TextBox 
{ 
    public delegate void AutoCompleteDelegate(); 
    public event AutoCompleteDelegate AutoCompleteUsed; 
    public MyTextBox() 
    { 
     InitializeComponent(); 
     this.TextChanged += MyTextBox_TextChanged; 
     this.KeyDown += MyTextBox_KeyDown; 
    } 
    private bool keyPressed = false; 
    void MyTextBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     keyPressed = true; 
    } 

    void MyTextBox_TextChanged(object sender, EventArgs e) 
    { 
     if (!keyPressed && AutoCompleteUsed != null) 
     { 
      AutoCompleteUsed(); 
     } 
     keyPressed = false; 
    } 
} 

編集1:@Hansアンパッサンは、彼のコメントで私に答えを与えた、私はちょうどあなたの作業(ISH?)例を挙げました。