我在組合框中有自動完成選項的小問題。一切工作正確的,但我想工作它指出錯誤:)C中的組合框和自動完成#
當我開始在組合框中鍵入,autusuggest工作我喜歡的方式:
但是,當我第一次打開組合框,和然後開始打字我得到類似的東西:
更重要的是我無法從自動提示組合框挑項目,只能從下面這個列表。
AutocompleteMode是SuggestAppend
我想有自動提示喜歡上了第一張照片,並在如畫2的情況下,此第一框列表應該得到某種封閉..
我在組合框中有自動完成選項的小問題。一切工作正確的,但我想工作它指出錯誤:)C中的組合框和自動完成#
當我開始在組合框中鍵入,autusuggest工作我喜歡的方式:
但是,當我第一次打開組合框,和然後開始打字我得到類似的東西:
更重要的是我無法從自動提示組合框挑項目,只能從下面這個列表。
AutocompleteMode是SuggestAppend
我想有自動提示喜歡上了第一張照片,並在如畫2的情況下,此第一框列表應該得到某種封閉..
我有同樣的問題,解決這樣說:
private void comboBox_DropDown(object sender, EventArgs e)
{
ComboBox cbo = (ComboBox)sender;
cbo.PreviewKeyDown += new PreviewKeyDownEventHandler(comboBox_PreviewKeyDown);
}
private void comboBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
ComboBox cbo = (ComboBox)sender;
cbo.PreviewKeyDown -= comboBox_PreviewKeyDown;
if (cbo.DroppedDown) cbo.Focus();
}
一旦在DropDown
用戶點擊按鈕PreviewKeyDown
事件附加到ComboBox
。當用戶開始輸入時,觸發新添加的事件。在這種情況下,我們檢查ComboBox
是否爲DroppedDown
,如果是,請關注ComboBox
。在ComboBox
重點DropDown
消失,就是這樣。
你嘗試其他AutoCompleteMode
的可能值爲Append
,None
和Suggest
?我認爲你正在尋找的是Suggest
而不是AppendSuggest
。
這裏是一些downloadable sample code說明不同的模式,如果你需要它。
我試過了。追加是顯示其餘的值,並建議這是新的組合框窗口。我想用推薦模式來創建這個新的組合框。但是,這個第一個名單應該關閉.. – Elfoc 2011-06-05 14:59:39
如何使用DropDown和DropDownClosed事件來禁用或更改自動完成模式?
我有完全相同的問題。 我嘗試了DropDown和DropDownClosed事件來將AutoCompleteMode屬性設置爲none並提示。 在這種情況下,使用鼠標選擇項目後,SelectedIndexChanged事件不會被觸發。 我在SelectedIndexChanged事件中使用了SelectedValue屬性,此屬性在DropDownClosed事件觸發時已經更改。 在我的情況下,我只是從DropDownClosed事件中調用SelectedIndexChanged方法來解決問題。
我還發現默認的UI實現讓人分心,因爲兩個下拉菜單爲鼠標控制而戰。
想要在顯示自動填充建議時隱藏下拉列表。在顯示自動填充建議之前,組合框會顯示一條窗口消息。爲了響應此消息,我選擇了摺疊下拉列表。它需要一個很小的組合框覆蓋來達到這個目的:
Public Class Combobox2
Inherits ComboBox
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = 135 AndAlso DroppedDown Then 'WM_GETDLGCODE
DroppedDown = False
End If
MyBase.WndProc(m)
End Sub
End Class
在ComboBox KeyDown上實現事件。它應該看起來像這樣。
void cmbExample_KeyDown(object sender, KeyEventArgs e)
{
if ((sender as ComboBox).DroppedDown)
(sender as ComboBox).DroppedDown = false;
}
void cmbExample_KeyDown(object sender, KeyEventArgs e)
{
cmbExample.DroppedDown = false;
}
這工作完美! – 2014-10-23 19:42:25