20 Stimmen

Wie man auf die Eigenschaften eines Benutzerelements in C# zugreift

Ich habe ein C#-Benutzerelement mit einem Textfeld und einem Richtextfeld erstellt.

Wie kann ich auf die Eigenschaften der Richtextbox von außerhalb der Benutzerkontrolle zugreifen?

Zum Beispiel.. wenn ich es in ein Formular setzen, wie kann ich die Text-Eigenschaft der richtextbox verwenden?

danke

32voto

M4N Punkte 92235

Der sauberste Weg ist es, die gewünschten Eigenschaften als Eigenschaften des Benutzerelements zu definieren, z.B:

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 freilegen möchten und ob diese lesend/schreibend oder schreibgeschützt sein sollen. (Natürlich sollten Sie für die Eigenschaften je nach ihrer Bedeutung bessere Namen verwenden).

Ein weiterer Vorteil dieses Ansatzes besteht darin, dass die interne Implementierung der Benutzersteuerung verborgen bleibt. Sollten Sie jemals Ihr Richtext-Steuerelement gegen ein anderes austauschen wollen, werden Sie die Aufrufer/Benutzer Ihres Steuerelements nicht stören.

4voto

Robert Venables Punkte 5903

Ändern Sie den Zugriffsmodifikator ("Modifiers") der RichTextBox im Eigenschaftsraster auf Public.

3voto

Fabrizio C. Punkte 1544

Fügen Sie dem Benutzerkontrollfeld eine Eigenschaft wie diese hinzu

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

2voto

JYelton Punkte 34080

Ich hatte kürzlich einige Probleme mit einer benutzerdefinierten Klasse:

Ein Benutzersteuerelement hatte eine öffentliche Eigenschaft, die von einem benutzerdefinierten Klassentyp war. Der Designer versucht standardmäßig, ihr einen Wert zuzuweisen, so dass im Code des Designers die Zeile userControlThing.CustomClassProperty = null wurde automatisch hinzugefügt.

Die Absicht war, die Benutzersteuerung während der Ausführung des Programms jederzeit mit einer benutzerdefinierten Klasse zu versehen (um für den Benutzer sichtbare Werte zu ändern). Da die set {} Teil nicht auf Nullwerte geprüft hat, sind verschiedene Fehler aufgetreten.

Die Lösung bestand darin, die Eigenschaft in eine private Eigenschaft umzuwandeln und zwei öffentliche Methoden zum Setzen und Abrufen des Wertes zu verwenden. Der Designer versucht, die Eigenschaften automatisch zuzuweisen, lässt aber die Methoden in Ruhe.

0voto

Timothy Carter Punkte 14840

Sie müssen eine öffentliche Eigenschaft für die richtextbox machen, oder eine andere Eigenschaft, die die Aufgabe der Einstellung der richtextbox Text wie tut:

private RichTextBox rtb;

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X