Nic*_*dis 5 c# textbox autocomplete
我使用c#winforms visual studio 2010.我有一个文本框,其列表为自动完成数据源.一切都很好,除了我点击自动完成时没有找到事件.我想在自动完成行命中和其他事情,除了只用所选行值填充文本框.可能吗?
非常感谢
小智 3
我进行了快速测试,这似乎有效,如果这很黑客,请不要介意我。我创建了一个UserControl继承自TextBox. 它监视KeyDown事件,该事件在事件之前触发TextChanged,切换位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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:@Hans Passant 在他的评论中给了我答案,我只是给了你一个工作(ish?)的例子。