souci concepteur WinForms - C#/.NET managed - Programmation
Marsh Posté le 02-05-2006 à 11:02:07
Le concepteur qui pleure ?
J'ai jamais eu, c'est marrant...
Prend ton bloc :
Code :
|
Et colle-le dans le constructeur, juste en dessous du commentaire :
// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
Marsh Posté le 02-05-2006 à 14:08:19
ou sinon je crée une fonction et j'y deplace le contenu de la fonction InitializeComponent()...
Marsh Posté le 02-05-2006 à 14:18:56
le probleme c que si je deplace les blocs posant probleme dans une autre fonction que j'appelle dans le Main()
je les verrai pas dans l'editeur WYSIWYG de VS
Marsh Posté le 02-05-2006 à 15:08:43
Ben le soucis c'est que tu rajoute du code dans un format que l'éditeur de code ne peut pas parser.
J'aurais tendance à dire créer, tes radiobuttons avec l'éditeur, puis écrit une petite fonction qui remplira ton tableau de radiobutton apres l'initialize component.
this.tabChoixOptions = new System.Windows.Forms.RadioButton[8];
this.tabChoixOptions[0] = this.radioButton1;
this.tabChoixOptions[1] = this.radioButton2;
etc...
De toute manière, vu comment tu veux faire, tu te retrouvera forcement à faire qqchose à la mimine.
Marsh Posté le 02-05-2006 à 19:22:42
faire des choses a la main oui tout a fait
je veux pas compter que VS pour me pondre du code
(ca serait comme faire exclusivement appel a Dreamweaver pour pondre du HTML)
ca vous est jamais arrivé de devoir crée rune liste de radiobuttons dans des tableaux, pour par exemple ensuite le parcourir et savoir lequel est checké ?
Marsh Posté le 02-05-2006 à 20:54:36
il ne faut jamais toucher à la fonction InitializeComponent(). Xas a raison, tu dois initialiser tes controles dans le constructeur, ou alors les mettre au design-time. mais ne pas toucher à cette fonction
Marsh Posté le 03-05-2006 à 09:03:31
Harkonnen a écrit : il ne faut jamais toucher à la fonction InitializeComponent(). Xas a raison, tu dois initialiser tes controles dans le constructeur, ou alors les mettre au design-time. mais ne pas toucher à cette fonction |
[HS]
si tu utilises des users controls qui doivent partager des variables entre eux, tu n'as pas trop le choix non ?
ex : j'ai un userControl qui calcule un identifiant, je créé un accesseur dans ce user control. Lorsque j'ai d'autres users controls qui veulent acceder à l'accesseur, il est vide si le calcul de mon identifiant est fait dans le constructeur ou au page load, car rien ne me dit lequel sera instancié le premier.
En revanche, je sais que tout les InitializeComposant seront faits avant le pageLoad.
Et a l'execution des users controls qui vont chercher la variable, je n'aurai pas de souci.
J'espere être à peut près clair. Je suis preneur d'une autre méthode s'il y a mieux
[/HS]
Marsh Posté le 03-05-2006 à 10:53:26
Le constructeur appelle toujours la méthode InitializeComponent.
Comme son nom l'indique, elle ne sert qu'à initialiser les composants.
Si tu veux aller plus loin dans leur utilisation, ben tu le fais toujours dans le constructeur, juste après l'appel à InitializeComponent, et là tu rajoutes ta gestion des évènements (comme pour ton exemple) parce qu'à ce moment tu es sûr que tous tes composants ont été déclaré.
Marsh Posté le 03-05-2006 à 13:01:47
Xas a écrit : Le constructeur appelle toujours la méthode InitializeComponent. |
ok, je testerai avec le constructeur. J'avais mis mon code dans le pageLoad, mais rien ne me garantissait que le user control qui est interrogé par les autres soit le premier instancié..je verifie cet aprem
Marsh Posté le 01-05-2006 à 23:10:58
bonjour
j'ai créé une petite appli de test pour me familiairser avec les winforms
(cette appli qui n'a aucun autre interet, c juste pour faire des tests vu que je suis plutot debutant ) :
j'ai voulu créer un groupe de boutons radio
pour cela j'ai créé un tableau d'objets radiobutton
afin de pouvoir mieux le manipuler, avec des boucles.
la bonne nouvelle c que mon appli compile bien, l'application marche
la mauvaise nouvelle c que Visual Studio me marque une erreur:
une erreur s'est produite lors du chargement du document. Corrigez cette erreur et essayez de charger de nouveau le document.
Le message d'erreur est le suivant:
Le concepteur ne pas peut traiter la code de la ligne 61 :
this.tabOptions[0] = new System.Windows.Forms.Radiobutton();
le code dans la méthode InitializeComponent ets généré par le concepteur et ne doit pas etre modifié manuellement.
Supprimez les modifications et essayez de rouvrir le concepteur.
donc certes ca marche en apparence, mais je veux faire quelque chose de propre et corriger cette erreur
Bref prendre des le debut de bonnes habitudes et prendre note de vos remarques.
voici mon code:
Message édité par jokari34 le 01-05-2006 à 23:12:13