Pregunta

Hice un control de usuario de C # con un cuadro de texto y un cuadro de texto enriquecido.

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

Por ejemplo ... si lo puse en un formulario, ¿cómo puedo usar la propiedad de texto de richtextbox ???

gracias

¿Fue útil?

Solución

La forma 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 manera, puede controlar qué propiedades desea exponer y si deben ser de lectura / escritura o de solo lectura. (por supuesto, debe 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 de texto enriquecido con uno diferente, no interrumpirá a las personas que llaman / usuarios de su control.

Otros consejos

Cambie el modificador de acceso (" Modificadores ") del RichTextBox en la cuadrícula de propiedades a Público.

Agregue una propiedad al control de usuario como este

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

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. De manera predeterminada, el diseñador 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 control del usuario una clase personalizada en cualquier momento mientras se ejecuta el programa (para cambiar los valores visibles para el usuario). Debido a que la parte de set {} no comprobó los valores nulos, se estaban produciendo varios errores.

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 solos.

Necesitas hacer una propiedad pública para el cuadro de texto enriquecido, o exponer alguna otra propiedad que haga el trabajo de configurar el texto del cuadro de texto enriquecido como:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top