¿Qué debo hacer si no quiero que VS agregue algunas propiedades públicas de un componente al método InitializeComponent() durante el diseño? Intenté agregar [Navegable (falso)] al atributo pero tampoco funciona.
Mi código es el siguiente:
/// <resumen>
/// Cuadro de lista desplegable del tipo de comunicación del controlador.
/// </summary>
clase pública CommunicationTypeComboBox: ComboBox
{
/// <resumen>
/// Construir una instancia de cuadro de lista.
/// </summary>
Tipo de comunicación públicaComboBox()
{
Items.Add("Puerto serie");
Artículos.Add("TCP");
}
/// <resumen>
/// Obtiene todos los elementos del cuadro de lista.
/// </summary>
[Navegable (falso)]
nuevos elementos públicos de la colección de objetos
{
obtener { base de retorno.Artículos }
}
}
Coloque el control en el formulario y VS agregará automáticamente algo de código al método InitializeComponent(). Parte en negrita.
//
// cmbTipo de comunicación
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = verdadero;
this.cmbCommunicationType.Items.AddRange(nuevo objeto[] {
"puerto serie",
"TCP"});
this.cmbCommunicationType.Location = nuevo System.Drawing.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = nuevo System.Drawing.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += nuevo System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
Será así a medida que aumente el número de ediciones. ¿Hay alguna forma de evitar esto además de no agregar elementos en el constructor?
this.cmbCommunicationType.Items.AddRange(nuevo objeto[] {
"puerto serie",
"TCP",
"puerto serie",
"TCP",
"puerto serie",
"TCP",
"puerto serie",
"TCP",
"puerto serie",
"TCP"});
Después de varios días de arduo trabajo, finalmente encontré la clase DesignOnlyAttribute.
Especifica si una propiedad solo se puede establecer en tiempo de diseño.
Los miembros marcados estableciendo DesignOnlyAttribute en verdadero solo se pueden configurar en tiempo de diseño. Normalmente, estas propiedades sólo existen en tiempo de diseño y no corresponden a una propiedad real en el objeto de tiempo de ejecución.
Los miembros que no tienen atributos (Atributo) o que están marcados configurando DesignOnlyAttribute en falso se pueden configurar en tiempo de ejecución. El valor predeterminado es falso.
Agregar DesignOnlyAttribute al atributo Items de CommunicationTypeComboBox puede resolver perfectamente este problema.
/// <resumen>
/// Obtiene todos los elementos del cuadro de lista.
/// </summary>
[Solo diseño (falso)]
nuevos elementos públicos de la colección de objetos
{
obtener { base de retorno.Artículos }
}