IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[c#] des winform à contenu dynamique


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut [c#] des winform à contenu dynamique
    Bonjour, je travail sur une application langage c# et je suis bloqué sur un truc .
    mon probleme est le suivant:
    ma fenetre devrait être à contenu dynamique, je m'explique:
    -la fenetre contient des labels et des zones de textes ,sauf que on connait pas d'avance leur nombre ni leur contenues.
    - c'est suite à un choix de l'utilisateur de l'application que la fenetre doit afficher les label et les zones de textes pour representer les noms de champs de la table selectionné sur les labels, et le premier enregistrement correspondants dans les textboxs.
    exemple:- la table personne contient les champs nom,prenom, date de naissance. la fenetre contiendra alors trois labels nom, prenom et date de naissance et trois zones de texts
    -la table Client contient 2 champs NumerCli,Nom Societe. la fenetre devrais alors contenir que deux label affichant numerCli et nom societe et deux zones de texte
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    quelle est donc la question ?
    Quand tu crées une form avec le designer, il génère du code que tu peut retrouver dans le projet ( MaForm.Designer.cs ). Il te suffit donc de faire la même chose, à la main avec du code qui serai par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach(entrées in tes_données)
    {
      Label n_label = new Label(); 
      ...
      this.Controls.Add(n_label);
    }
    etc..

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut
    merci pour ta reponse , je vais essayé et voir qu'est que ça donne thks

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut
    j'ai essayé ta proposition mais la fenetre s'affiche vide comme si il prenait pas en consideration le bloc add(label)

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    dans la procédure qui charge tes données tu met le code, mais c'était juste une idée, ensuite pour chaque label :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    n_label.Text = ..
    n_label.Left = ...
    n_label.Top = ..
    n_label.ForeColor = ...
    n_label.BackColor = ...
    n_label.AutoSize = true;
     
    taFormPrincipale.Controls.Add(n_label);
    tu fait de même pour les textBox et tout autre controle dynamique... et donc tes labels seront visibles quand tu va lancer ton application.

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut
    oui, c'est ce' que j'ai fait mais le meme resultat.
    voila le code que j'ai rajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    foreach (System.Data.DataRow oDataRow in oDataTableInfosTable.Rows)
    {
    String NomColonne = "";
     
    NomColonne = oDataRow["ColumnName"].ToString();
    Console.WriteLine(NomColonne);
    Label label1 = new Label();
    label1.AutoSize = true;
    label1.Location = new System.Drawing.Point(530, 60);
    label1.Text = NomColonne;
    label1.Visible = true;
    label1.TabIndex = 0;
    frmAffichage.Controls.Add(label1);
    frmAffichage.PerformLayout();
     
     
    }
    frmAffichage.ShowDialog();

  7. #7
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Cette petite classe est faite pour aider à la création dynamique de composants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    public class SxDynamicControls
      {
        internal static Label AddLabel(int X, int Y, String ControlText, Control.ControlCollection ParentControl)
        {
          Label NewControl = new Label();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Text = ControlText;
          NewControl.Size = new Size(10, 99);
          ParentControl.Add(NewControl);
          NewControl.AutoSize = true;
          return NewControl;
        }
    
        internal static CheckBox AddCheckBox(int X, int Y, String ControlText, Control.ControlCollection ParentControl)
        {
          CheckBox NewControl = new CheckBox();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Text = ControlText;
          NewControl.Size = new Size(10, 10);
          ParentControl.Add(NewControl);
          NewControl.AutoSize = true;
          return NewControl;
        }
    
        internal static Button AddButton(int X, int Y, String ControlText, DialogResult DialogRes, String ImageName, Control.ControlCollection ParentControl)
        {
          Button NewControl = new Button();
          if ((ImageName != null) && (ImageName != String.Empty))
          {
            NewControl.Image = ((System.Drawing.Image)(new System.ComponentModel.ComponentResourceManager(typeof(SxResourcesForm)).GetObject(ImageName + ".Image")));
            NewControl.TextImageRelation = TextImageRelation.ImageBeforeText;
            NewControl.ImageAlign = ContentAlignment.MiddleLeft;
          }
          NewControl.Location = new System.Drawing.Point(X, Y);
          if (ControlText!="") NewControl.Text = ControlText + " ";
          NewControl.Size = new Size(10, 10);
          NewControl.DialogResult = DialogRes;
          ParentControl.Add(NewControl);
          NewControl.AutoSize = true;
          if (ControlText != "") NewControl.Size = new Size(NewControl.Width + 8, NewControl.Height + 2) ;
          else                   NewControl.Size = new Size(NewControl.Width + 3, NewControl.Height + 2) ;
          return NewControl;
        }
    
        internal static RadioButton AddRadioButton(int X, int Y, String ControlText, Control.ControlCollection ParentControl)
        {
          RadioButton NewControl = new RadioButton();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Text = ControlText;
          NewControl.Size = new Size(10, 10);
          ParentControl.Add(NewControl);
          NewControl.AutoSize = true;
          return NewControl;
        }
    
        internal static TextBox AddTextBox(int X, int Y, int Width, int Height, String ControlText, Control.ControlCollection ParentControl)
        {
          TextBox NewControl = new TextBox();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Text = ControlText;
          NewControl.Size = new Size(Width, Height);
          ParentControl.Add(NewControl);
          return NewControl;
        }
    
        internal static Panel AddPanel(int X, int Y, int Width, int Height, Control.ControlCollection ParentControl)
        {
          Panel NewControl = new Panel();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Size = new Size(Width, Height);
          ParentControl.Add(NewControl);
          return NewControl;
        }
    
        internal static GroupBox AddGroupBox(int X, int Y, int Width, int Height, String ControlText, Control.ControlCollection ParentControl)
        {
          GroupBox NewControl = new GroupBox();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Size = new Size(Width, Height);
          NewControl.Text = ControlText;
          ParentControl.Add(NewControl);
          return NewControl;
        }
    
    
        internal static CheckedListBox AddCheckedListBox(int X, int Y, int Width, int Height, DockStyle ControlDockStyle, Control.ControlCollection ParentControl)
        {
          CheckedListBox NewControl = new CheckedListBox();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Size = new Size(Width, Height);
          ParentControl.Add(NewControl);
          NewControl.Dock = ControlDockStyle;
          return NewControl;
        }
    
        internal static SxCheckedListBoxEventManager CheckedListBoxEventManager;
    
        internal static void ModifyCheckedListBoxBehaviour(CheckedListBox SourceCheckedListBox)
        {
          Label MouseDownIndexLabel = AddLabel(99, 99, "-1", SourceCheckedListBox.Controls) ;
          MouseDownIndexLabel.Visible=false ;
          MouseDownIndexLabel.Name="MouseDownIndexLabel" ;
          if (CheckedListBoxEventManager==null) CheckedListBoxEventManager=new SxCheckedListBoxEventManager() ;  
          SourceCheckedListBox.MouseDown += CheckedListBoxEventManager.MouseDown;
        }
    
        internal static ComboBox AddComboBox(int X, int Y, int Width, int Height, String ControlText, Control.ControlCollection ParentControl)
        {
          ComboBox NewControl = new ComboBox();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Text = ControlText;
          NewControl.Size = new Size(Width, Height);
          ParentControl.Add(NewControl);
          return NewControl;
        }
    
        internal static DataGridView AddGridView(int X, int Y, int Width, int Height, DockStyle ControlDockStyle, Control.ControlCollection ParentControl)
        {
          DataGridView NewControl = new DataGridView();
          ((System.ComponentModel.ISupportInitialize)(NewControl)).BeginInit();
          NewControl.Location = new Point(X, Y);
          NewControl.Size = new System.Drawing.Size(Width, Height);
          NewControl.Name = "GridView";
          ParentControl.Add(NewControl);
          NewControl.Dock = ControlDockStyle;
          ((System.ComponentModel.ISupportInitialize)(NewControl)).EndInit();
          return NewControl;
        }
    
        internal static TabControl AddTabControl(String[] PageNames, DockStyle ControlDockStyle, Control.ControlCollection ParentControl)
        {
          return AddTabControl(0, 0, 40, 40, PageNames, ControlDockStyle, ParentControl);
        }
    
        internal static TabControl AddTabControl(int X, int Y, int Width, int Height, String[] PageNames, DockStyle ControlDockStyle, Control.ControlCollection ParentControl)
        {
          TabControl NewControl = new TabControl();
          NewControl.Location = new System.Drawing.Point(X, Y);
          NewControl.Size = new Size(Width, Height);
          if (PageNames!=null) for (int i = 0; i < PageNames.Length; i++) { TabPage Tp = new TabPage(PageNames[i]); NewControl.TabPages.Add(Tp); }
          ParentControl.Add(NewControl);
          NewControl.Dock = ControlDockStyle;
          return NewControl;
        }
    
      }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Contenu dynamique des rapport
    Par soleil2jour dans le forum Jasper
    Réponses: 3
    Dernier message: 22/01/2008, 11h13
  2. [WinForms]Ouverture dynamique des ports réseaux [upnp]
    Par soad029 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 14/10/2006, 00h23
  3. Erreur EACCESSVIOLATION avec des compsts créés dynamiquement
    Par tsikpemoise dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/02/2004, 19h05
  4. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo