2010-08-16 6 views
0

J'ai un contrôle utilisateur avec une zone de texte dans une application de formulaires gagnants. Je voudrais changer la propriété de cette zone de texte en utilisant la fenêtre de propriétés de Visual Studio. J'utilise ce contrôle dans différentes formes du même projet, est-ce possible? J'ai mis la propriété de modification de la zone de texte comme public et mis en propriété dans le suivant contrôle utilisateur:Contrôle utilisateur avec une zone de texte

public TextBox mytextBox 
     { 
      get { return textBox1; } 
      set { textBox1 = value; } 
     } 

Merci à l'avance.

Répondre

1

Quelle est l'intention de le faire? Essayez-vous d'avoir "un contrôle TextBox partagé par plusieurs formulaires" (ce n'est pas vraiment pratique). Cependant, vous pouvez configurer vos formulaires de manière à ce que tous les formulaires soient mis à jour en réponse à un seul changement.

+0

Il a une utilisation très pratique, je crée un contrôle qui a une zone de texte, et d'autres boutons et étiquettes, j'utilise ce contrôle dans beaucoup de palces, mais dans certaines implémentations j'aimerais que la zone de texte soit par exemple multiligne ou Backcolor modifié par exemple. – Thunder

+0

Alors voulez-vous utiliser un TextBox qui existe déjà sur chaque formulaire? Qu'en est-il d'avoir une propriété de chaîne de sorte que vous pouvez le définir au nom de la TextBox que vous voulez utiliser, et puis au moment de l'exécution, après l'initialisation, trouvez le contrôle et obtenez une référence à celui-ci. Vous pouvez également avoir la zone de texte dans le contrôle et exposer simplement les propriétés que vous souhaitez modifier cette zone de texte en tant que propriétés de votre contrôle. Ce dernier est probablement le plus conventionnel. – Swanny

0
[TypeConverter(typeof(ExpandableObjectConverter))] 
public TextBox mytextBox 
{ 
    get { return textBox1; } 
    set { textBox1 = value; } 
} 

Notes:

  1. Du point de vue de l'PropertyGrid, le compositeur n'a aucun avantage dans ce cas; les propriétés du TextBox déjà affecté sont en cours de modification. N'oubliez pas de créer une valeur initiale et d'ajouter le TextBox au contrôle-collection de UserControl. Si vous avez utilisé le concepteur VS pour créer le TextBox, cela aurait déjà dû être fait. Si vous trouvez que la méthode du concepteur VS InitializeComponents() annule vos modifications, créez et ajoutez le contrôle vous-même.
  2. Vous devrez peut-être reconstruire le projet et/ou rouvrir le concepteur Forms pour que la modification soit visible. Hors-sujet: utilisez Pascal-case pour les propriétés, et le motif get;set; automatiquement mis en œuvre pour la lisibilité, si possible.
+0

la propriété ne change pas dans le temps de conception mais quand j'exécute le programme toutes les propriétés personnalisées que j'ai définies sont perdues! – Thunder

+0

Cela en raison de l'appel InitializeComponents(); vous pouvez voir les changements dans votre fichier Form1.designer.cs. Une façon de résoudre cela serait de ne pas compter sur le concepteur pour cela, ajoutez le contrôle vous-même dans le constructeur. – Ani

Questions connexes