は、私を気にしません。 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?)例を挙げました。
いいえ、イベントは発生せず、Windows自身が通知を生成しません。副作用TextChangedしか見ることができません。背景情報はSHAutoCompleteのMSDN記事にあります –