C# 防止combobox在用户键入时更改所选选项。C

C# 防止combobox在用户键入时更改所选选项。C,c#,winforms,combobox,C#,Winforms,Combobox,我有一个具有焦点的组合框,如果用户键入一个字符,如何防止组合框更改所选索引 假设我有一个带有选项a和B的组合框,a被选中并且组合框有焦点,如果用户按下B,组合框将更改为B选项,我如何防止这种情况发生 我之所以要这样做,是因为我正在使用条形码扫描仪,下拉列表中包含打印机列表,所选打印机打印与条形码扫描仪扫描内容相关的内容。因此,如果我看到组合框/下拉框有焦点,条形码扫描仪发送输入,它会更改所选打印机 这是我使用的第一个解决方案:我在组合框上使用了keypress事件,并将handled标志设置为t

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

假设我有一个带有选项a和B的组合框,a被选中并且组合框有焦点,如果用户按下B,组合框将更改为B选项,我如何防止这种情况发生

我之所以要这样做,是因为我正在使用条形码扫描仪,下拉列表中包含打印机列表,所选打印机打印与条形码扫描仪扫描内容相关的内容。因此,如果我看到组合框/下拉框有焦点,条形码扫描仪发送输入,它会更改所选打印机

这是我使用的第一个解决方案:我在组合框上使用了keypress事件,并将handled标志设置为true

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

但此解决方案不适用于Windows 98。

您可以存储最初选择的值,然后在处理按键时替换它


我非常建议在设置值之前将焦点设置为控件,或者在条形码扫描期间禁用组合框。

更改DropDownStyle=DropDownList它将变为只读。TaZz,DropDownStyle设置为DropDownList。组合框中的文本不可编辑,但当您键入字符时,组合框将跳转到以该字符开头的选项(如果是这样的选项)exists@TaZzDropDownList仍然会从keypress上的列表中选择,如果它找到匹配项,这就是我最终使用的:我将所选索引存储在keydown上,并将其设置回keydup。我宁愿在扫描过程中禁用combobox,但在我的应用程序中,确定何时从条形码扫描仪获得输入是相当棘手的,因此我选择了我提到的解决方案。