2012-09-25 88 views
2

有沒有辦法重寫Combobx的Add()方法?重寫組合框的添加方法

我問這個問題的原因是我想將類對象添加到我的combbox中,但是爲了顯示我希望它顯示我的對象的名稱。

因此,例如:combbox.Items.Add(myClassObject)

,但我們在combbobx實際看到的用戶將顯示爲myClassObject.Name

+1

您已收到幾個完全不同的有效解決方案。不是很酷?! – Yatrix

回答

7

如果我正確理解你的要求,你可以做,使用綁定:

僞代碼:

comboBox.DataSource = collectionOfData; 
comboBox.DisplayMember = "Name"; 

的數據將被添加到組合技,但可視化將是該Name財產「數據」。

這一切都使用DisplayMember Property完成。

0

創建一個擴展組合框控件的新的控制。
然後覆蓋Add方法。

+2

現有的'ComboBox'類被設計爲已經做了OP所需要的,他只需要正確使用它。 – Servy

4

因爲ComboBox使用它在項目的集合添加到顯示的UI,所以覆蓋的myClassObjectToString返回任何你想要的對象ToString()方法,很簡單:

class myClassObject 
{ 
    public override string ToString() 
    { 
     return "whatever you want"; 
    } 
} 

用這種方式,你做不碰ComboBox控件

3

您可以開發extension Method

public static class Extension 
{ 
    public static void Add(this ComboBox, myClassObject value) 
    { 
     ... 
    } 
} 
+0

現有的ComboBox類被設計爲已經做了OP所需要的,他只需要正確地使用它。 – Servy

+0

@BDotA非常瞭解,我們對個性化行爲的可能性 –