2011-10-12 57 views
4

我正在嘗試使用找到的方法here創建一個自定義組合框,它顯示一個選擇網格而不是內置列表下拉列表。該解決方案基本上覆蓋了OnDropDown方法,創建一個表單並顯示它。但是,我發現在單擊向下箭頭時也會顯示內置下拉列表。我的表格已經被繪製出來,但它確實出現了一秒鐘。有任何想法嗎?在Winforms中,如何覆蓋ComboBox的OnDropDown方法?

protected override void OnDropDown(EventArgs e) 
{ 
    DropDownForm dropDown = new DropDownForm(); 

    // Locate at correct location. 
    DropDownForm.Location = ...; 

    DropDownForm.Show(); 
} 

回答

4

在這種情況下,我會推薦自定義用戶控件的簡單性。與其試圖規避默認行爲(爲此設計控件),使用文本框和打開網格的按鈕創建用戶控件並不重要。事實上,你可以將你的網格捆綁下來,並擁有完全可重用的控制。

+0

我害怕會是別人的回答。它不應該太難。當我試圖模仿ComboBox的行爲時,我只是擔心錯過了一些東西。無論如何,我可以合法地分發框架或Windows中包含的向下箭頭圖像嗎? – bsh152s

+0

你不應該害怕這個答案 - 這是正確的方式來做到這一點,你想要正確地做到這一點,對嗎?查看http://www.iconfinder.com以瞭解您的項目中使用的圖形和圖標。許多這些圖標都有公開的分發許可證。 –