将两个列表绑定到组合框,其中一个仅用于提示
我正在创建一个生日通知程序,同时也是一个编辑器,可以将庆典添加到“数据库”中。 编辑器可以使用3个组合框 - 一个用于日,月和年。
目前的情况是,用户可以使用数字键盘来设置日期和年份,但是在每月的情况下,他必须写出月份的名称或使用鼠标从滚动菜单中选择一个项目。
一个理想的情况是用户只能使用制表符(这是由TabIndex解决)和数字键盘 - 月份ComboBox后面的建议将基于两个(以某种方式连接)列表 - 月名称(1月,2月......)和月数字(1,2,...) - 只有唯一一个(名字)可见 - 这样用户就有机会编写“j”或“1”来选择“January”项目。 那可能吗?
我目前的Combobox设置是:
提前感谢您的任何建议。
就我个人而言,我不认为我会期望一个列表框来回应两个列表。 如果我看到一个月份列表为文本,我不希望能够按数字选择它们。 但这完全有可能只是我:-)
假设你已经考虑过其他选择,比如日历控件,你可以尝试在组合框上捕获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”,它将选择12月。
链接地址: http://www.djcxy.com/p/60909.html上一篇: Bind two lists to combobox, one only for suggestions
下一篇: How to disable combox dropdown when user enters text into the combox