Frage

Ich habe einen C # Usercontrol mit einem Textfeld gemacht und ein richtextbox.

Wie kann ich auf die Eigenschaften des richtextbox von außerhalb des Usercontrol.

Zum Beispiel .. wenn ich es in eine Form gebracht, wie kann ich den Text propertie des richtextbox verwenden ???

Dank

War es hilfreich?

Lösung

sauberste Weg ist, um die gewünschten Eigenschaften als Eigenschaften Ihres Usercontrol zu belichten, z:

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


  //...
}

Auf diese Weise können Sie steuern, welche Eigenschaften Sie machen möchten und ob sie Lese- / Schreib werden soll oder schreibgeschützt. (Natürlich sollten Sie besser Namen für die Eigenschaften verwenden, je nach ihrer Bedeutung).

Ein weiterer Vorteil dieses Ansatzes besteht darin, dass sie die interne Umsetzung Ihrer Benutzersteuerung versteckt. Sollten Sie jemals wollen Ihre rich Steuerung mit einem anderen auszutauschen, werden Sie nicht die Anrufer / Benutzer Ihrer Kontrolle brechen.

Andere Tipps

Ändern Sie den Zugriffsmodifizierer ( „Modifier“) des RichTextBox im Eigenschaftenraster auf Öffentlich.

Fügen Sie eine Eigenschaft auf den Usercontrol wie folgt

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

Vor kurzem hatte ich ein paar Probleme tun dies mit einer benutzerdefinierten Klasse:

Ein Benutzer Kontrolle hatte eine öffentliche Eigenschaft, die eine benutzerdefinierte Klassentyp war. Der Designer standardmäßig versucht, einen gewissen Wert darauf, so der Designer-Code zugewiesen werden, wurde die Linie userControlThing.CustomClassProperty = null automatisch hinzugefügt werden.

Die Absicht war es, die Benutzersteuerung mit einer benutzerdefinierten Klasse an einem beliebigen Stelle zu schaffen, während das Programm ausgeführt wird (auf Werte für den Benutzer sichtbar zu ändern). Da der set {} Teil nicht für NULL-Werte überprüfen haben, verschiedene Fehler wurden wieder auftauchen.

Die Lösung wurde die Eigenschaft auf einen privaten zu ändern, und zwei öffentliche Methoden zu setzen und den Wert zu erhalten. Der Designer wird versuchen, Auto-Assign-Eigenschaften, läßt aber Methoden allein.

Sie brauchen eine öffentliche Eigenschaft für die richtextbox zu machen, oder eine andere Eigenschaft aussetzen, die die Arbeit des Einstellens der richtextbox Text tut wie:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top