2011-05-19 31 views
4

我有一个组合框具有焦点,如果用户键入一个字符,如何防止组合框更改所选索引。防止用户输入时组合框更改所选选项。 C#

说我有一个选项“A”和“B”的组合框,选择“A”并且组合框具有焦点,如果用户按下“B”,组合框变为“B”选项,怎么办我防止这种情况发生?

我想这样做的原因是因为我使用的条形码扫描仪和下拉包含打印机的列表,选择的打印机打印相关的东西是什么条形码扫描器扫描。因此,如果组合框/下拉框具有焦点并且条形码扫描仪发送输入,它将更改选定的打印机。

这是我用过的第一个解决方案:我以前在组合框的按键事件,并已处理标记为真

private void comboBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     e.Handled = true; 
    } 

但这种方法不适用于Windows 98的工作

+0

更改DropDownStyle = DropDownList它将变为只读。 – Burimi 2011-05-19 10:56:14

+0

TaZz,DropDownStyle设置为DropDownList。在下拉列表中的文本是不可编辑的,但是当你输入一个字符组合框跳转到以该字符开始(如果这样的选择存在)的选项 – b2238488 2011-05-19 11:00:34

+0

@TaZz的DropDownList仍将从按键列表中选择,如果发现匹配 – hawbsl 2011-05-19 11:03:07

回答

3

你可以存储最初选定的值,然后在处理KeyPress时替换它。

我更建议将焦点设置到控制设置的值之前,或禁用组合框的条形码扫描的持续时间。

+0

这是我最终使用的:http://pastie.org/private/eh01lrhfe4yadikzuwsutw我将选定的索引存储在keydown上并将其设置回密钥。在扫描期间,我宁愿禁用组合框,但在我的应用程序中,确定何时从条形码扫描仪获得输入是非常棘手的,因此我决定采用我提到的解决方案。 – b2238488 2011-05-19 11:18:03

相关问题