[英]Bind two lists to combobox, one only for suggestions
我正在创建一个用于生日通知的程序,并且还创建了将名人添加到“数据库”中的编辑器。 编辑器可使用3个组合框-一个组合用于日,月和年。
当前的情况是用户可以使用数字键盘设置日期和年份,但是在月份的情况下,他必须输入月份的名称或使用鼠标从滚动菜单中选择一项。
理想的情况是用户只能使用制表符(由TabIndex解决)和数字键盘-月组合框后面的建议将基于两个(以某种方式连接)列表-月名称(1月,2月,...)和月数字(1、2,...)-唯一的一个(已命名)是可见的-这样用户将有机会编写“ j”或“ 1”以选择“一月”项目。 那可能吗?
我当前的组合框设置为:
在此先感谢您的任何建议。
就个人而言,我认为我不会期望列表框能够响应两个列表。 如果我看到一个月份列表作为文本,我将无法通过数字选择它们。 但是完全有可能只有我:-)
假设您已经考虑过其他方法,例如日历控件,则可以尝试在组合框中捕获KeyDown事件,如下所示?
private string keysTyped = string.Empty;
private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
KeysConverter conv = new KeysConverter();
this.keysTyped+=conv.ConvertToString(e.KeyCode).Replace("NumPad", "");
int numTyped;
while (int.TryParse(this.keysTyped, out numTyped))
{
if (numTyped <= 12)
{
this.comboBox1.SelectedIndex = numTyped - 1;
break;
}
this.keysTyped = this.keysTyped.Substring(1);
}
}
这似乎可以用我所做的最少的测试来解决,我认为它可以回答问题,但确实确实有些令人费解,这通常使我怀疑我是否在尝试做我不应该做的事情。 但是如果您需要的是...
请注意,它之所以复杂是因为它被设计为可以接受两位数字,而不只是一位数字。 有多种方法可以执行此操作,但以上方法似乎最简单。 因此,如果您输入“ 1”然后输入“ 2”,它将选择December。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.