Comment accéder aux propriétés d'un usercontrol en C#

j'ai fait un c# usercontrol avec une textbox et une richtextbox.

Comment puis-je accéder aux propriétés de la richtextbox depuis l'extérieur du usercontrol.

Par exemple.. si je le mets dans une forme, Comment puis-je utiliser la propriété de texte de la richtextbox???

merci

20
demandé sur Pedro Luz 2009-01-04 20:23:31

5 réponses

la manière la plus propre est d'exposer les propriétés désirées comme propriétés de votre usercontrol, E. g:

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 façon, vous pouvez contrôler les propriétés que vous souhaitez exposer et s'ils devraient ê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 cache l'implémentation interne de votre contrôle utilisateur. Si jamais vous voulez échanger vos richtext contrôle avec un autre, vous ne briserez pas les appelants/utilisateurs de votre contrôle.

32
répondu M4N 2009-11-24 19:15:02

modifier le modificateur d'accès ("Modifiers") de la boîte RichTextBox dans la grille de propriété au Public.

3
répondu Robert Venables 2009-01-04 17:26:56

ajouter une propriété au usercontrol comme ceci

public string TextBoxText
{
    get
    {
        return textBox1.Text;
    }
    set
    {
        textBox1.Text = value;
    }
}
3
répondu Fabrizio C. 2009-01-04 17:30:30

j'ai récemment eu quelques problèmes de le faire avec une classe personnalisée:

Un contrôle utilisateur a une propriété publique qui était d'un type de classe personnalisée. Le créateur essaie par défaut de lui attribuer une valeur, donc dans le code du Créateur, la ligne userControlThing.CustomClassProperty = null était ajouté automatiquement.

L'intention était de pouvoir fournir le contrôle utilisateur avec une classe personnalisée à tout moment pendant l'exécution du programme (pour changer les valeurs visibles à l'utilisateur). Parce que set {} partie n'a pas vérifiez les valeurs nulles, diverses erreurs sont apparues.

La solution a été de changer la propriété d'un privé, et d'utiliser deux méthodes pour définir et obtenir la valeur. Le concepteur va essayer d'auto-assigner des propriétés, mais laisse les méthodes seules.

2
répondu JYelton 2010-06-16 22:04:43

Vous devez faire une propriété publique pour la richtextbox, ou exposer une autre propriété qui fait le travail de définir le texte de richtextbox comme:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
0
répondu Timothy Carter 2009-01-04 17:32:03