(WinForms項目在Visual Studio 2010,.NET 4,C#)如何更改組合框的鍵盤輸入行爲
我在DropDownList的風格的組合框一套固定它們的積分數從1到40項, 一世。即,ComboBox用於輸入1到40之間的一個數字。
現在,當用戶使用鍵盤輸入新值,比如說「1」,並且控件的當前值是「2」時, ComboBox首先跳到「10」,而我更喜歡它跳到「1」,只有第二次按鍵跳轉到以「1」開頭的第二項,即「10」。
有沒有簡單的方法來改變這種行爲?
(WinForms項目在Visual Studio 2010,.NET 4,C#)如何更改組合框的鍵盤輸入行爲
我在DropDownList的風格的組合框一套固定它們的積分數從1到40項, 一世。即,ComboBox用於輸入1到40之間的一個數字。
現在,當用戶使用鍵盤輸入新值,比如說「1」,並且控件的當前值是「2」時, ComboBox首先跳到「10」,而我更喜歡它跳到「1」,只有第二次按鍵跳轉到以「1」開頭的第二項,即「10」。
有沒有簡單的方法來改變這種行爲?
我不認爲有一個「簡單的方法」。您需要構建自定義的ComboBox類並覆蓋the Control.ProcessKeyEventArgs Method。
ComboBox
執行增量搜索,從當前選定的項目開始。輸入1 0將導致您以「10」開始輸入,無論選擇哪一個。
如何填充前導零的所有條目,以便用戶可以爲第一個條目鍵入「01」?
這也將確保條目排序正確(您是否應該對列表項進行排序,並且它們是否應該在數字字符後面包含文本,因爲遲早可能就是這種情況))。
我正在考慮在KeyDown處理程序中將selectedIndex設置爲0以使搜索從頭開始,但似乎不起作用。 – hackotronic
將其設置爲-1,或將SelectedValue設置爲Nothing。在KeyDown中重置它的問題會破壞增量搜索功能,因爲您總是強制搜索從第一個項目開始(並且無論如何設置項目停止增量搜索,我相信)。 – TheBlastOne
ComboBox會從當前選定的項目開始進行增量搜索。輸入1 0將導致您以「10」開始輸入,無論選擇哪一個。你的願望會禁用增量搜索功能。 – TheBlastOne