2012-03-28 58 views
0

我有一個組合框的用戶控件,所以我可以編輯的文本作爲財產,我有以下代碼:用戶控件的ComboBox.ObjectCollection屬性?

public ComboBox.ObjectCollection _OptionList { 
    get { 
     return OptionChoice.Items; 
    } 
    set { 
     for (int i = 0; i < value.Count; i++) 
     { 
      OptionChoice.Items.Add(value[i]); 
     } 
    } 
} 

是否有可能訪問組合框的這個屬性爲一個屬性用戶控制?如果是這樣我做錯了什麼?它建立並運行,但是當我點擊VS中的屬性並添加一個項目時,新項目是System.Object並且不會讓我改變它...

+2

我沒有肯定的答案,但它看起來像你打算爲你的getter返回'ReturnValue',而不是'OptionChoice.Items'。也許這是導致意想不到的結果... – 2012-03-28 01:54:30

+0

@GrantWinney當我第一次編輯此代碼後,它沒有工作,我試圖使用列表 ReturnValue的數據,然後改變了我的想法,但保留在那裏,以防萬一我想改變它背部。對不起,我應該刪除它...我只是把它拿出 – Oztaco 2012-03-28 01:59:39

回答

2

當我閱讀它時,您只需要您的UserControl上的相同Items集合 - 充當UserControl上特定組合框的傳遞。

於是告訴設計師你期待什麼類型的列表它是:

[Editor("System.Windows.Forms.Design.ListControlStringCollectionEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", 
    typeof(UITypeEditor))] 
public ComboBox.ObjectCollection Items 
{ 
    get{ return this.comboBox1.Items; } 
} 

你再也不想對集合屬性的設置。 (好吧,幾乎從不)。

+0

,但我需要能夠改變組合框中的項目,這會讓我改變它嗎? – Oztaco 2012-03-29 02:20:27

+0

是的。它的工作原理與原來的ComboBox完全一樣,因爲這幾乎是完全相同的代碼。試一試。 – 2012-03-29 02:35:38

0
public System.Windows.Forms.ComboBox.ObjectCollection Item 
    { 
     set { 
      for (byte i = 0; i < value.Count; i++) 
       comboBox1.Items.Add(value[i].ToString()); 
     } 
     get { return comboBox1.Items; } 
    } 

試試這個

+3

當用代碼回答問題時,請嘗試提供它所做的操作以及爲什麼它應該解決問題的描述。 – 2015-05-28 15:33:20