предоставление свойства combobox Items в usercontrol

#c# #visual-studio-2008 #properties

#c# #visual-studio-2008 #свойства

Вопрос:

У меня есть пользовательский элемент управления, который содержит поле со списком. Я хочу иметь возможность редактировать свойство элементов для поля со списком, но я не совсем уверен, как это сделать. Я попытался добавить свойство элементов в свой класс пользовательского управления, но я не уверен, какое значение возвращается при установке свойства в меню свойств Visual studio. У меня есть настройка свойства следующим образом:

 [Editor("System.Windows.Forms.Design.StringCollectionEditor, System.Design",
    "System.Drawing.Design.UITypeEditor, System.Drawing")]
    public ComboBox.ObjectCollection Items
    {
        get
        {
            return this.comboBox.Items;
        }
        set
        {
            this.comboBox.Items.Add(value);
        }
    }  
  

Ответ №1:

Оберните свойство элементов списка вашего UserControl в свойство, подобное этому:

 [Description("The items in the UserControl's ComboBox."), 
 DesignerSerializationVisibility(DesignerSerializationVisibility.Content), 
 Editor("System.Windows.Forms.Design.StringCollectionEditor, System.Design", typeof(System.Drawing.Design.UITypeEditor))] 
public System.Windows.Forms.ComboBox.ObjectCollection MyItems {
    get { 
        return comboBox1.Items; 
    }
}
  

Атрибут EditorAttribute в свойстве указывает элемент пользовательского интерфейса, используемый для изменения свойства в конструкторе.

Комментарии:

1. это работает только с заданными вами элементами в коде? Я попытался добавить элементы в меню свойств представления Visual Studio designer, и это не сработало. В списке со списком нет элементов, когда я запускаю приложение.

2. @MBU отредактировал мой ответ — нашел, как вы можете сделать то, что вам нужно сделать. Очень удобно.

Ответ №2:

Попробуйте добавить два метода для добавления и удаления ComboBox элементов:

 public void AddItem(Object item)
{
    this.comboBox.Items.Add(item);
}

public void RemoveItem(Object item)
{
    this.comboBox.Items.Remove(item);
}