2010-03-10 66 views
6

我有一個窗體有一個組合框控件。我已選擇DropDown樣式屬性爲DropDown。我也設置DropDown寬度爲250. 我已經將自動完成模式設置爲建議並將自動完成源設置爲列表項目。 當我點擊下拉菜單時,它工作得非常好。但是當我輸入somethin時,自動完成模式會激活一個寬度較小的下拉菜單。使用.net組合框

任何幫助欣賞。 我想知道如何通過代碼增加自動完成下拉的寬度,以便正確查看列表項目。 我使用C#

+1

也許分享一些你的代碼可以幫助我們確定問題。 :) – 2010-03-10 17:31:24

回答

4

是的,這是設計。 ComboBox使用SHAutoComplete API function來實現自動完成功能。請注意聲明,該函數會處理ComboBox的文本框部分。因此,它不知道它實際上爲ComboBox而不是TextBox提供了自動完成信息。因此,沒有辦法補償您使用的非標準下拉寬度。

那麼,這就解釋了爲什麼它不起作用。修復它在技術上是可能的,但相當難看。您將不得不在KeyUp事件中運行代碼並使用EnumTheadWindows()來查找自動填充窗口句柄。然後你可以使用SetWindowPos()使它變大。在ComboBox.cs(AutoCompleteDropDownFinder.FindDropDowns)中已經有類似於這個的代碼,使用Reference Source或Reflector來幫助你做到這一點。祝你好運!

+2

看起來Calle已經爲你做了這項工作。 – 2010-03-10 17:53:18

-1

也許這篇文章中,我就寫了Codeproject可以幫助您相對於組合,下拉框和一個辦法,我砍死這個...