Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1619 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  souci concepteur WinForms

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

souci concepteur WinForms

n°1357455
jokari34
Posté le 01-05-2006 à 23:10:58  profilanswer
 

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:

Citation :

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:
 

Code :
  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. namespace radio
  8. {
  9. /// <summary>
  10. /// Description résumée de Form1.
  11. /// </summary>
  12. public class Form1 : System.Windows.Forms.Form
  13. {
  14.  private System.Windows.Forms.Label label1;
  15.  private System.Windows.Forms.RadioButton[] tabChoixOptions;
  16.  /// <summary>
  17.  /// Variable nécessaire au concepteur.
  18.  /// </summary>
  19.  private System.ComponentModel.Container components = null;
  20.  public Form1()
  21.  {
  22.   //
  23.   // Requis pour la prise en charge du Concepteur Windows Forms
  24.   //
  25.   InitializeComponent();
  26.   //
  27.   // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
  28.   //
  29.  }
  30.  /// <summary>
  31.  /// Nettoyage des ressources utilisées.
  32.  /// </summary>
  33.  protected override void Dispose( bool disposing )
  34.  {
  35.   if( disposing )
  36.   {
  37.    if (components != null)
  38.    {
  39.     components.Dispose();
  40.    }
  41.   }
  42.   base.Dispose( disposing );
  43.  }
  44.  #region Code généré par le Concepteur Windows Form
  45.  /// <summary>
  46.  /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
  47.  /// le contenu de cette méthode avec l'éditeur de code.
  48.  /// </summary>
  49.  private void InitializeComponent()
  50.  {
  51.   this.tabChoixOptions = new System.Windows.Forms.RadioButton[1];
  52.   this.tabChoixOptions[0] = new System.Windows.Forms.RadioButton();
  53.   this.tabChoixOptions[0].Location = new System.Drawing.Point(24, 64);
  54.   this.tabChoixOptions[0].Name = "rb_membre_classe";
  55.   this.tabChoixOptions[0].Size = new System.Drawing.Size(128, 24);
  56.   this.tabChoixOptions[0].TabIndex = 10;
  57.   this.tabChoixOptions[0].Text = "membre de classe";
  58.   this.tabChoixOptions[0].Tag  = "static";
  59.   this.label1 = new System.Windows.Forms.Label();
  60.   this.SuspendLayout();
  61.   //  
  62.   // label1
  63.   //  
  64.   this.label1.Location = new System.Drawing.Point(176, 80);
  65.   this.label1.Name = "label1";
  66.   this.label1.TabIndex = 0;
  67.   this.label1.Text = "label1";
  68.   //  
  69.   // Form1
  70.   //  
  71.   this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  72.   this.ClientSize = new System.Drawing.Size(292, 273);
  73.   this.Controls.Add(this.label1);
  74.   this.Name = "Form1";
  75.   this.Text = "Form1";
  76.   this.Load += new System.EventHandler(this.Form1_Load);
  77.   this.ResumeLayout(false);
  78.  }
  79.  #endregion
  80.  /// <summary>
  81.  /// Point d'entrée principal de l'application.
  82.  /// </summary>
  83.  [STAThread]
  84.  static void Main()
  85.  {
  86.   Application.Run(new Form1());
  87.  }
  88.  private void Form1_Load(object sender, System.EventArgs e)
  89.  {
  90.  }
  91. }
  92. }


Message édité par jokari34 le 01-05-2006 à 23:12:13
mood
Publicité
Posté le 01-05-2006 à 23:10:58  profilanswer
 

n°1357622
Xas
Freshershist
Posté le 02-05-2006 à 11:02:07  profilanswer
 

Le concepteur qui pleure ?
J'ai jamais eu, c'est marrant...
 
Prend ton bloc :

Code :
  1. this.tabChoixOptions = new System.Windows.Forms.RadioButton[1];
  2. this.tabChoixOptions[0] = new System.Windows.Forms.RadioButton();
  3. this.tabChoixOptions[0].Location = new System.Drawing.Point(24, 64);
  4. this.tabChoixOptions[0].Name = "rb_membre_classe";
  5. this.tabChoixOptions[0].Size = new System.Drawing.Size(128, 24);
  6. this.tabChoixOptions[0].TabIndex = 10;
  7. this.tabChoixOptions[0].Text = "membre de classe";
  8. this.tabChoixOptions[0].Tag  = "static";


 
Et colle-le dans le constructeur, juste en dessous du commentaire :
// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent


---------------
H. - 48h en fiat et j'ai déjà perdu la maitrise de mon argent
n°1357792
jokari34
Posté le 02-05-2006 à 14:08:19  profilanswer
 

ou sinon je crée une fonction et j'y deplace le contenu de la fonction InitializeComponent()...

n°1357809
jokari34
Posté le 02-05-2006 à 14:18:56  profilanswer
 

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

n°1357844
chagarou
Posté le 02-05-2006 à 15:08:43  profilanswer
 

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.

n°1358047
jokari34
Posté le 02-05-2006 à 19:22:42  profilanswer
 

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é ?

n°1358102
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-05-2006 à 20:54:36  profilanswer
 

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


---------------
J'ai un string dans l'array (Paris Hilton)
n°1358250
alien_nan
Posté le 03-05-2006 à 09:03:31  profilanswer
 

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]


Message édité par alien_nan le 03-05-2006 à 09:04:37
n°1358385
Xas
Freshershist
Posté le 03-05-2006 à 10:53:26  profilanswer
 

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é.


---------------
H. - 48h en fiat et j'ai déjà perdu la maitrise de mon argent
n°1358558
alien_nan
Posté le 03-05-2006 à 13:01:47  profilanswer
 

Xas a écrit :

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é.


 
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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  souci concepteur WinForms

 

Sujets relatifs
souci de recuperation de donneessouci de doublons
souci de presentation dans mon formulairesouci avec player mp3 flash et page html
.NET 2005 Winforms - Comment activer le Style XP ?Remplir ComboBox a partir dune Base de Données (WinForms)
Mini Souci d'expression réguliéreSouci en javascript avec un div : drag & drop !?
souci sur vbscriptpti souci XSL
Plus de sujets relatifs à : souci concepteur WinForms


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR