2010-02-23 79 views
2

我在窗體上有一個下拉列表樣式的CComboBox。關於這種風格的好處是它允許提前輸入 - 也就是說,您可以鍵入一個字符,並且它將跳轉到匹配該字符的列表中的第一個項目。但是,某些項目需要從此行爲中排除。這可以如何實現?僅包含CComboBox類型中的某些項目嗎?

回答

1

就像一個簡單的(也許是醜陋的)「詭計」的想法:你能掩蓋你想排除的任何特殊字符,比如*作爲第一個字符嗎? (因此,您將添加到組合框*MyItemText而不是MyItemText。)如果您的項目列表需要排序,您必須先關閉ComboBox的autosort屬性,然後執行自己的排序(不包括*),然後再將項目添加到組合框。用戶也會認識到,這是一個無法通過提前鍵入的項目(如果這在您的應用程序中有意義或應該有用)。

CComboBox沒有任何Edit或TextChanged事件。所以我的猜測是,對於另一個更好的解決方案,您必須努力工作並評估單個鍵盤事件,並通過項目列表運行自己的搜索。我沒有更好的主意。

+0

是的,我試圖跳過的項目實際上是從一個括號'['開始的,所以我不認爲你的建議會起作用(不過好主意)。 – drewh 2010-02-24 19:33:06

+0

確實令人驚訝:如果我在ComboBox中輸入'c',但是找不到'ccc'並且實際上在搜索中跳過,則會找到一個項目[ccc]。我不相信,如果我沒有它只是測試:) – Slauma 2010-02-24 19:47:37

相關問題