tag propiedad c# user-controls properties richtextbox

propiedad tag c#



Cómo acceder a las propiedades de un control de usuario en C# (5)

He creado un control de usuario C # con un cuadro de texto y un richtextbox.

¿Cómo puedo acceder a las propiedades de richtextbox desde fuera del usercontrol?

Por ejemplo ... si lo pongo en una forma, ¿cómo puedo usar la propiedad Text de richtextbox ???

Gracias


Agregue una propiedad al usercontrol como este

public string TextBoxText { get { return textBox1.Text; } set { textBox1.Text = value; } }


Cambie el modificador de acceso ("Modificadores") de RichTextBox en la cuadrícula de propiedades a Public.


Necesita hacer una propiedad pública para richtextbox, o exponer alguna otra propiedad que haga el trabajo de configurar el texto richtextbox como:

private RichTextBox rtb; public string RichTextBoxText { get { return rtb.Text; } set { rtb.Text = value; } }


La manera más limpia es exponer las propiedades deseadas como propiedades de su control de usuario, por ejemplo:

class MyUserControl { // expose the Text of the richtext control (read-only) public string TextOfRichTextBox { get { return richTextBox.Text; } } // expose the Checked Property of a checkbox (read/write) public bool CheckBoxProperty { get { return checkBox.Checked; } set { checkBox.Checked = value; } } //... }

De esta forma puede controlar qué propiedades desea exponer y si deben ser de lectura / escritura o de solo lectura. (por supuesto, debería usar mejores nombres para las propiedades, dependiendo de su significado).

Otra ventaja de este enfoque es que oculta la implementación interna de su control de usuario. Si alguna vez desea intercambiar su control richtext con uno diferente, no romperá las llamadas / usuarios de su control.


Recientemente tuve algunos problemas al hacer esto con una clase personalizada:

Un control de usuario tenía una propiedad pública que era de un tipo de clase personalizado. El diseñador, de forma predeterminada, intenta asignarle algún valor, por lo que en el código del diseñador, la línea userControlThing.CustomClassProperty = null se agregó automáticamente.

La intención era poder proporcionar al usuario control con una clase personalizada en cualquier momento mientras se ejecuta el programa (para cambiar los valores visibles para el usuario). Debido a que la porción set {} no verificaba valores nulos, varios errores estaban apareciendo.

La solución fue cambiar la propiedad a una privada, y usar dos métodos públicos para establecer y obtener el valor. El diseñador intentará asignar propiedades automáticamente, pero deja los métodos solo.