2011-05-19 33 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

相關問題