Что делать, если я не хочу, чтобы некоторые общедоступные свойства компонента добавлялись VS в метод InitializeComponent() во время проектирования? Я пробовал добавить к атрибуту [Browsable(false)], но это тоже не работает.
Мой код выглядит следующим образом:
/// <сводка>
/// Раскрывающийся список типа связи контроллера.
/// </сводка>
открытый класс CommunicationTypeComboBox: ComboBox
{
/// <сводка>
/// Создаем экземпляр списка.
/// </сводка>
общественный тип связиComboBox()
{
Items.Add("Последовательный порт");
Items.Add("TCP");
}
/// <сводка>
/// Получить все элементы в списке.
/// </сводка>
[Доступно для просмотра (ложь)]
общедоступные новые элементы ObjectCollection
{
получить {вернуть базу.Предметы};
}
}
Поместите элемент управления в форму, и VS автоматически добавит код в метод InitializeComponent(). Жирная часть.
//
// тип связи cmb
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = true;
this.cmbCommunicationType.Items.AddRange(новый объект[] {
«последовательный порт»,
"TCP"});
this.cmbCommunicationType.Location = новый System.Drawing.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = новый System.Drawing.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += новый System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
Так будет по мере увеличения количества правок. Есть ли способ обойти это, кроме как не добавлять элементы в конструктор?
this.cmbCommunicationType.Items.AddRange(новый объект[] {
«последовательный порт»,
«ПТС»,
«последовательный порт»,
«ПТС»,
«последовательный порт»,
«ПТС»,
«последовательный порт»,
«ПТС»,
«последовательный порт»,
"TCP"});
После нескольких дней напряженной работы я наконец нашел класс DesignOnlyAttribute.
Указывает, можно ли задать свойство только во время разработки.
Члены, отмеченные установкой для DesignOnlyAttribute значения true, можно задать только во время разработки. Обычно эти свойства существуют только во время разработки и не соответствуют фактическому свойству объекта среды выполнения.
Члены, которые не имеют атрибутов (Attribute) или помечены установкой DesignOnlyAttribute в значение false, могут быть установлены во время выполнения. По умолчанию — ложь.
Добавление DesignOnlyAttribute к атрибуту Items объекта CommunicationTypeComboBox может прекрасно решить эту проблему.
/// <сводка>
/// Получить все элементы в списке.
/// </сводка>
[ДизайнТолько(ложь)]
общедоступные новые элементы ObjectCollection
{
получить {вернуть базу.Предметы};
}