Question

J'ai créé une commande utilisateur C # avec une zone de texte et une boîte richtext.

Comment puis-je accéder aux propriétés de la boîte richtext de l'extérieur du contrôle utilisateur?

Par exemple .. si je le mets dans un formulaire, comment puis-je utiliser la propriété Text de la richtextbox ???

merci

Était-ce utile?

La solution

La méthode la plus propre consiste à exposer les propriétés souhaitées en tant que propriétés de votre contrôle utilisateur, par exemple:

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 cette manière, vous pouvez contrôler les propriétés que vous souhaitez exposer et si elles doivent être en lecture / écriture ou en lecture seule. (bien sûr, vous devriez utiliser de meilleurs noms pour les propriétés, en fonction de leur signification).

Un autre avantage de cette approche est qu’elle masque l’implémentation interne de votre contrôle utilisateur. Si vous souhaitez un jour échanger votre contrôle richtext avec un autre, vous ne pourrez pas casser les appelants / utilisateurs de votre contrôle.

Autres conseils

Modifiez le modificateur d'accès ("Modifiers") de RichTextBox dans la grille de propriétés en Public.

Ajouter une propriété au contrôle utilisateur comme ceci

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

J'ai récemment eu quelques problèmes avec une classe personnalisée:

Un contrôle utilisateur avait une propriété publique de type classe personnalisée. Par défaut, le concepteur tente de lui attribuer une valeur. Ainsi, dans le code du concepteur, la ligne userControlThing.CustomClassProperty = null a été ajoutée automatiquement.

L'intention était de pouvoir fournir au contrôle de l'utilisateur une classe personnalisée à tout moment de l'exécution du programme (pour modifier les valeurs visibles pour l'utilisateur). Étant donné que la partie set {} ne vérifiait pas les valeurs null, diverses erreurs se produisaient.

La solution consistait à remplacer la propriété par une propriété privée et à utiliser deux méthodes publiques pour définir et obtenir la valeur. Le concepteur essaiera d’affecter automatiquement les propriétés mais laissera les méthodes seules.

Vous devez créer une propriété publique pour la richtextbox ou exposer une autre propriété permettant de définir le texte de la richtextbox, comme suit:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top