Wie für den Zugriff auf Eigenschaften eines Usercontrol in C #
-
03-07-2019 - |
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
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;
}
}