2008-10-21 79 views
3

我試圖做一個行爲有點像Firefox 3的Awesomebar組合框,具有下列行爲:與Windows Awesomebar類似的行爲窗體

  1. 鍵入文本
  2. 異步帶回結果
  3. 上下選擇結果列表中,叢中一點是在輸入框中鍵入的文本,以便用戶可以繼續編輯限制結果集不同
  4. 輸入觸發一個事件,父窗體將漢dle

我有異步結果和過濾所有工作,但我沒有一個好的方法來顯示和選擇結果。

當您向下箭頭時,組合框會自動填充輸入框,並選擇所選內容。失敗#3。

我已經得到DevExpress控件,但他們的組合框做同樣的事情,我不知道如何重寫。

LookupEdit不允許輸入任意東西。 PopupContainerEdit也不是。

我想要的行爲就像是一個帶有下面列表框的文本框,文本框中的向上/向下事件會傳遞給列表框。但是,如果我嘗試製作一個自定義控件,將兩者結合起來,我就不知道如何像常規組合框上的下拉菜單一樣「浮動」列表框。

線索非常感謝!

回答

3

您可能需要使用文本框而不是組合框,因爲使用箭頭鍵從組合列表中選擇值並覆蓋當前值。通過使用文本框,您可以在TextChanged事件中查找,並且可以通過覆蓋KeyPress事件來存儲當前鍵入的值,以收集和存儲用戶鍵入的鍵。
彈出的值列表必須在繪畫事件中自繪。

這可能看起來過於複雜,但您可能需要放下組合控件並自己實現其某些功能。

+0

這是一種痛苦,但它確實看起來像這是唯一的方法。 只需顯示下面的浮動列表框,不讓它具有焦點,並向上/向下轉發關鍵事件就可以稍微簡單些。 – 2008-10-24 18:44:20

3

我一直在使用Skybound的AutoComplete控件。免費。它可以自定義,以便它可以近似於Awesomebar的行爲。

http://dev.skybound.ca/Products/AutoComplete/

+0

數據綁定模式下的這種控制幾乎完全符合我的要求。巖!謝謝! – 2008-10-22 14:06:45