如何获得事件“;所选项目”;带有C#中的自动完成功能
本文关键字:成功 功能 事件 何获得 选项 项目 带有 | 更新日期: 2023-09-27 18:28:32
我有使用AutoCompleteStringCollection
:的代码
private void txtS_TextChanged(object sender, EventArgs e)
{
TextBox t = sender as TextBox;
string[] arr = this.dbService.GetAll();
if (t != null)
{
if (t.Text.Length >= 3)
{
AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
collection.AddRange(arr);
this.txtSerial.AutoCompleteCustomSource = collection;
}
}
}
在用户选择自动完成建议后,如何获取"已选择项目"的事件?字段的值是多少?
对于textBox来说,没有所选项目Event这样的东西,我相信您正在使用它进行自动完成。你可以做的是在你的文本框中添加一个按键按下事件。在那里,您可以验证是否按下了回车键(点击建议的链接与按下回车键相同)。类似的东西:
private void textBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Enter) {
String selItem = this.textBox1.Text;
}
}
与其专注于检测是否选择了自动完成列表中的项目,不如检查文本框的当前值是否在自动完成条目集中。
if (txtSerial.AutoCompleteCustomSource.Contains(t.Text))
{
// Logic to handle an exact match being selected
...
}
else
{
// Update the autocomplete entries based on what was typed in
}
如果用户键入了一个恰好在自动完成值列表中的字符串——或者——他们从自动完成列表中选择了该值——这是否会产生任何不同的行为?我认为在大多数情况下不应该这样做。
简短回答:制作一个自定义事件
长话短说:您可以截取numpad Enter或普通Enter的文本框的KeyDown事件和工具箱的鼠标双击事件,并比较工具箱的内容,然后在它们匹配时激发一个事件,代理将拾取该事件。
这在一定程度上取决于程序的情况和工作流程,但我有一个例子,我触发了对组合框的focuslost的检查。然后我检查所选的值是否是集合的一部分:
private void cmbt1Name1_LostFocus(object sender, RoutedEventArgs e)
{
ComboBox cmb = sender as ComboBox;
FillFivePoints(cmb);
}
private void FillFivePoints(ComboBox usedCombobox)
{
if (txtSerial.AutoCompleteCustomSource.Contains(t.Text))
{
...