J'ai un UserControl simple contenant un ComboBox qui est vide au début. Le setter pour ce CB ajoute des éléments et le getter renvoie l'élément sélectionné. Lors de l'ajout de cette UC à un formulaire, le concepteur appelle automatiquement le getter pour le CB qui est vide. La méthode pour remplir le CB avec des éléments est appelée plus tard. Je peux penser à une ou deux façons de contourner ce problème en «déconnant» dans le code. Mais avant de commencer, j'aimerais vous demander s'il existe un moyen d'empêcher le concepteur d'appeler la méthode getter. Peut-être avec un attribut similaire à Browsable ou Bindable? thxempêche le concepteur d'appeler un getter (VS 2008, WinForms)
Répondre
Ce n'est pas si clair pour moi à quoi pourrait ressembler ce getter. Cependant, vous voulez vous assurer que le concepteur ne sérialise pas les propriétés qui ne devraient jamais être utilisées au moment de l'exécution. Pour ce faire, avec un attribut:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public int SomeProperty {
//etc...
}
Essayez ceci:
public ListBoxItem MyProperty
{
get
{
if (this.DesignMode)
{
return new ListBoxItem("empty");
}
else
{
return comboBox1.SelectedItems[0];
}
}
}
Le getter sera toujours appelé, mais vous pouvez contrôler ce qui est renvoyé ici.
Ou, je pense que mettre l'attribut [Browsable (false)]
au-dessus du getter pourrait fonctionner, aussi, mais je ne suis pas sûr.
Je suppose que mon code est tout simplement mauvais. J'ai un événement qui enregistre un changement de l'index sélectionné du CB. le concepteur appelle le getter, l'événement est déclenché et une méthode qui accepte l'élément sélectionné déclenche une exception (type faux). Bien sûr, je peux vérifier dans la méthode si l'article présenté est du bon type. etc. Mais j'aimerais vraiment savoir si l'on peut simplement cacher des getters au concepteur ou est-ce que cette demande est aussi une mauvaise idée? – LLEA
Il est parfois difficile d'avoir des contrôles normaux dans le concepteur, mais avoir des combos sur un formulaire est assez normal, donc je ne sais pas exactement pourquoi vous avez ce problème. Une solution simple consisterait à attacher uniquement l'événement change à la zone de liste déroulante lors de l'exécution. Dans l'événement load, vous pouvez placer quelque chose comme 'cb.onChange + = new EventHandler ...', au lieu de sélectionner cet événement dans le concepteur et de double-cliquer dessus. – MusiGenesis
Merci pour vos efforts. Je pourrais utiliser la partie avec this.DesignMode. En plus de cela, vous avez raison. Il y a plusieurs façons de contourner ce problème, mais j'étais juste curieux ... et maintenant j'ai eu une réponse. – LLEA
- 1. VS 2008 WinForms avec SourceSafe
- 2. VS 2008 concepteur "Impossible de trouver le type ...."
- 3. Afficher le code/Concepteur manquant dans VS 2008
- 4. Visual Studio 2008, conversion de type de concepteur WinForms
- 5. Le concepteur Visual Studio 2008 renvoie l'erreur
- 6. Concepteur WinForms: Ajouter un contrôle et le rendre visible pour le concepteur
- 7. fichier IExtenderProvider et concepteur WinForms
- 8. Comment le Concepteur Winforms instancie-t-il mon formulaire?
- 9. Ajouter dynamiquement un contrôle ActiveX sans le concepteur VS
- 10. Silverlight DataPager rompt VS concepteur
- 11. Ajouter un paramètre d'entrée VS 2008
- 12. WinForms, BindingSource, empêche la modification de CurrentItem
- 13. Afficher la hiérarchie de contrôle dans le concepteur WinForms
- 14. possible de désactiver le concepteur XAML par défaut dans VS 2008?
- 15. Migrer vs 2005 à 2008 vs
- 16. Crystal Reports vs question WinForms
- 17. Différence entre le concepteur relationnel Object et le concepteur de modèle de données Entity dans VS
- 18. Comment créer des propriétés implémentées automatiquement dans le concepteur de classe VS
- 19. Debugging traitement Designer VS 2008
- 20. Comment arrêter Visual Studio d'ouvrir mes commandes WinForms dans le concepteur
- 21. Concepteur de diagrammes de classe Visual Studio 2008
- 22. Créer un menu contextuel à l'aide du concepteur VS 2010?
- 23. La mise à niveau de VS 2008 modifie mes espaces de noms de concepteur de dataset
- 24. Contrôle vs UserControl dans WinForms?
- 25. Visual studio 2008 WPF concepteur questions
- 26. Une alternative à VS 2008 Designer Écran
- 27. asp.net vs WinForms ListBox ListBox
- 28. Concepteur de classes Visual Studio 2008 - plusieurs à plusieurs associations
- 29. WPF Designer (dans VS 2008 et VS 2010) se bloque avec Visual Studio
- 30. Architecture et modèles pour le développement d'un concepteur d'interface graphique personnalisé via C# & WinForms
thx ... c'est ce que j'ai cherché. Ça marche. le concepteur n'appelle plus la méthode getter. – LLEA