2012-03-28 89 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