Domanda

Ho creato un controllo utente C # con una casella di testo e una casella richtext.

Come posso accedere alle proprietà di richtextbox dall'esterno del controllo utente.

Ad esempio .. se lo metto in un modulo, come posso usare la proprietà Text della richtextbox ???

grazie

È stato utile?

Soluzione

Il modo più pulito è quello di esporre le proprietà desiderate come proprietà del tuo controllo utente, ad esempio:

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; }
  }


  //...
}

In questo modo puoi controllare quali proprietà vuoi esporre e se devono essere di lettura / scrittura o di sola lettura. (ovviamente dovresti usare nomi migliori per le proprietà, a seconda del loro significato).

Un altro vantaggio di questo approccio è che nasconde l'implementazione interna del controllo utente. Se dovessi mai scambiare il tuo controllo Richtext con un altro, non interromperai i chiamanti / utenti del tuo controllo.

Altri suggerimenti

Cambia il modificatore di accesso (" Modificatori ") di RichTextBox nella griglia delle proprietà in Pubblico.

Aggiungi una proprietà al controllo utente in questo modo

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

Di recente ho riscontrato alcuni problemi nel fare questo con una classe personalizzata:

Un controllo utente aveva una proprietà pubblica che era di un tipo di classe personalizzato. Per impostazione predefinita, il designer tenta di assegnargli un valore, quindi nel codice del designer è stata aggiunta automaticamente la riga userControlThing.CustomClassProperty = null .

L'intenzione era quella di essere in grado di fornire all'utente il controllo con una classe personalizzata in qualsiasi momento durante l'esecuzione del programma (per modificare i valori visibili all'utente). Poiché la parte set {} non ha verificato la presenza di valori null, sono stati rilevati vari errori.

La soluzione era cambiare la proprietà in una privata e usare due metodi pubblici per impostare e ottenere il valore. Il progettista proverà ad assegnare automaticamente le proprietà, ma lascia da soli i metodi.

Devi creare una proprietà pubblica per richtextbox o esporre altre proprietà che svolgono il compito di impostare il testo di richtextbox come:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top