Meilleur auteur de réponses
Ajouter des contrôles dynamiquement

Question
-
Bonjour,
Je souhaite afficher dans une fenetre la liste de réponse sur un message comme le cas des forums. Au début j'ai une zone de texte qui affiche le sujet puis le contexte dans une autre zone de texte. Puis tant qu' il y a des réponses je crée deux autres zones de textes et je les remplis. Le problème est comment ajouter à chaque fois ces controles au pannel. Comment je dois ajouter un bar de défilement quand la fenretre est trop petite.
panel1.AutoScroll = true; //reponse est un DataTable qui contient dans mon cas 4 rows for (int i = 0; i < reponse.Rows.Count; i++) { Label label1 = new System.Windows.Forms.Label(); Label label2 = new System.Windows.Forms.Label(); Label label3 = new System.Windows.Forms.Label(); Label label4 = new System.Windows.Forms.Label(); Label label5 = new System.Windows.Forms.Label(); RichTextBox richTextBox1 = new System.Windows.Forms.RichTextBox(); // label1 // label1.AutoSize = true; label1.Location = new System.Drawing.Point(31, 40); label1.Name = "label1"; label1.Size = new System.Drawing.Size(35, 13); label1.TabIndex = 0; label1.Text = reponse.Rows[i].Field<String>("idlogin"); // // richTextBox1 // richTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); richTextBox1.Location = new System.Drawing.Point(162, 71); richTextBox1.Name = "richTextBox1"; richTextBox1.ReadOnly = false; richTextBox1.Size = new System.Drawing.Size(344, 104); richTextBox1.TabIndex = 1; richTextBox1.Text = reponse.Rows[i].Field<String>("commentaire"); // // label2 // label2.AutoSize = true; label2.Location = new System.Drawing.Point(31, 90); label2.Name = "label2"; label2.Size = new System.Drawing.Size(105, 13); label2.TabIndex = 2; label2.Text = "Date de publication :"; // // label3 // label3.AutoSize = true; label3.Location = new System.Drawing.Point(31, 132); label3.Name = "label3"; label3.Size = new System.Drawing.Size(35, 13); label3.TabIndex = 3; label3.Text = "label3"; // // label4 // label4.AutoSize = true; label4.Location = new System.Drawing.Point(159, 40); label4.Name = "label4"; label4.Size = new System.Drawing.Size(40, 13); label4.TabIndex = 4; label4.Text = "Sujet : "; // // label5 // label5.AutoSize = true; label5.Location = new System.Drawing.Point(242, 40); label5.Name = "label5"; label5.Size = new System.Drawing.Size(35, 13); label5.TabIndex = 5; label5.Text = "label5"; panel1.Controls.Add(label1); panel1.Controls.Add(label4); panel1.Controls.Add(label5); panel1.Controls.Add(richTextBox1); panel1.Controls.Add(label2); panel1.Controls.Add(label3); }
Mercimardi 5 mai 2009 17:21
Réponses
-
Oui, c'est ce qu'il y a de plus simple
Ajouté un nouveau UserControl au projet en cours
Mettre les labels et le richtextbox ext ext, une fois
que c'est fait retourner dans la form et mettre un
FlowLayoutPanel (AutoScroll = true)
Généré votre code afin d'incorporer UserControl
Glisser l'UserControl dans le FlowLayoutPanel, il prendra place tout seul
lorsque vous mettez plusieurs contrôle dans FlowLayoutPanel il y aura plus besoin de s'occuper de leurs position ... ça les mettra a la suite des autres ...
.
Cordialement, Troxsa- Marqué comme réponse ZEMZEMI Amine mercredi 6 mai 2009 16:38
mercredi 6 mai 2009 15:20
Toutes les réponses
-
Bonjour,
je comprend bien le titre mais je comprend pas quelle est la demande ...
Vous dites "comment ajouté des contrôles au panel" la réponse ce trouve déjà dans ce que vous avez donnée
exemple :
panel1.Controls.Add(label3);
Puis la question :
Comment je dois ajouter une barre de défilement quand la fenêtre est trop petite.
ce n'est pas la réponse ça ?
panel1.AutoScroll = true;
La question ne serait elle pas comment ajouté des contrôles dynamiquement a la suite des autres de haut vers le bas ou vis versa ?
Le mieux ne serait il pas l'utilisation du contrôle FlowLayoutPanel ou TableLayoutPanel1 ?
Cordialement, Troxsamardi 5 mai 2009 19:43 -
Bonsoir,
Oui en fait je voulais ajouter des nouvelles contrôles à la suite des autres vers le bas. Comment je pourrai utiliser TableLayoutPanel1 ? Est ce que je dois gérer l'emplacement des champs ?
Mercimardi 5 mai 2009 19:53 -
Bonsoir
Non pas du tout l'emplacement des controles qui sont ajoutés dynamiquement ce place automatiquement, il suffit de bien configurer le controle FlowLayoutPanel ou TableLayoutPanel1
:p
Cordialement, Troxsamardi 5 mai 2009 19:55 -
Que voulez-vous dire avec bien configurer le contrôle ? Avez-vous un exemple ?
Merci pour votre aidemardi 5 mai 2009 20:30 -
Bonjour,
Un code sans avoir de modèle sur le quel vous êtes entrain de travailler ne servirais a pas grand choses mais je vais quand même essayer en créant un contrôle, mais ça sera en VB .net (c'est le langage ou je me sens le plus alaise)
Je vais faire ça pour aujourd'hui quand j'aurai un moment de libre :)
.
Cordialement, Troxsamercredi 6 mai 2009 12:19 -
Re bonjour,
J'ai donc creer un controlUser avec les 5 label et la richtextbox que j'ai appelé MonControleForum
en retournant dans mon concepteur windows Form (apres un build) mon nouveau control est present dans ma liste de control (boite a outils)
Dans mon form1 j'ai ajouté FlowLayoutPanel1 (AutoScroll = true) puis j'ai ajouté mon nouveau controle fraichement créer qui donne MonControleForum1
pour faire la modification d'un des labels il suffit de lui mettre la propriété du nom du label
exemple : MonControleForum1.Label1 = "Toto"
Pour creer autant "MonControleForum" dans le FlowLayoutPanel1 il suffira de faire une nouvelle instance
exemple : Dim DynamikCF as new MonControleForum
For i as interger = 0 to 10
Dim DynamikCF as new MonControleForum
DynamikCf.Name = "Dynamik" & i
FlowLayoutPanel1.Controls.Add(DynamikC)
Next
.
Cordialement, Troxsamercredi 6 mai 2009 14:39 -
Bonjour,
Merci pour votre réponse, donc je dois créer un UserControl ?mercredi 6 mai 2009 14:43 -
Oui, c'est ce qu'il y a de plus simple
Ajouté un nouveau UserControl au projet en cours
Mettre les labels et le richtextbox ext ext, une fois
que c'est fait retourner dans la form et mettre un
FlowLayoutPanel (AutoScroll = true)
Généré votre code afin d'incorporer UserControl
Glisser l'UserControl dans le FlowLayoutPanel, il prendra place tout seul
lorsque vous mettez plusieurs contrôle dans FlowLayoutPanel il y aura plus besoin de s'occuper de leurs position ... ça les mettra a la suite des autres ...
.
Cordialement, Troxsa- Marqué comme réponse ZEMZEMI Amine mercredi 6 mai 2009 16:38
mercredi 6 mai 2009 15:20 -
Bonjour,
Concernant le composant RichTextBox est ce qu'il y a des options qui permettent de changer la couleur du texte écrit, son format, sa taille,...
C'est à dire je voudrais afficher un menu horizontal avec ce composant où l'utilisateur choisit plusieurs options à son texte (comme le cas des RichText dans les forums).
Mercivendredi 8 mai 2009 09:18 -
Bonjour,
J'ai une autre question, comment je peux gérer le code des boutons si je les ajoute à mon userControl ? Le code des boutons doit être placé ou ?vendredi 8 mai 2009 09:45 -
Bonjour,
En double cliquant sur le bouton on entre dans l'événement du bouton.
ça doit donné UserControl.Button1.Text = "Toto"
Cordialement, Troxsavendredi 8 mai 2009 10:37 -
C'est bon j'ai réussi à faire ça, en fait j'ai créé un eventHandler et je l'ai associé au bouton contenu dans le userControl.
Mon souci maintenant est de savoir comment supprimer un userControl d'un FlowLayoutPanel : j'ai utilisé la méthode remove mais au niveau affichage le control reste, j'ai même invoqué la méthode refresh() mais ça change rien. Vous avez une idée sur ce problème ?
Mercivendredi 8 mai 2009 11:06 -
Bonjour,
Et Oups j'avais pas vu votre message avant
Avez vous essayer userControl1.Dispose ?
.
Cordialement, Troxsa- Proposé comme réponse Troxsa samedi 16 mai 2009 08:07
vendredi 15 mai 2009 10:55 -
Bonjour,
D'accord j'ai ajouté merci. J'ai une question comment je peux manipuler le champ RichText pour que l'utilisateur puisse modifier les propriétés de son texte : couleur, type de la police,...vendredi 15 mai 2009 22:29 -
Bonjour,
Il y a un contrôle ToolStrip1 ou on peux ajouté des éléments standard et il faudra géré les événements, italic, Gras, Souligner, ext ext ...
il me semble quand même qu'il existe un contrôle tout fait téléchargeable, je sais plus sur quel site
Cordialement, Troxsasamedi 16 mai 2009 08:06 -
Le problème que je gère mes données dans un fichier xml, donc comment je vais faire pour conserver les modifications de l'utilisateur. Est ce que vous connaissez le nom du contrôle ?samedi 16 mai 2009 08:09
-
Je vois pas du tout comment vous aller faire la sauvegarde dans un fichier XML
On va dire qu'on a un texte de la richTextBox de 20 lignes sur ses 20 lignes il y a 20 mots en Gras, 20 mots en Italique et 20 mots en souligner
Comment vous aller faire pour enregistrer un mot dans un fichier XML qui a un type en Gras ?
il faudra certainement enregistrer la position du mot le type de fonts, la taille et tout un tas de combinaison qui est pratiquement impossible de géré dans un fichier XML
le mieux pour enregistrer le texte de la richTextBox est de l'enregistrer au format DOC et de le reloader dans la RichTextBox ...
.
Cordialement, Troxsasamedi 16 mai 2009 08:40 -
Format doc vous voulez dire (fichier word) ?samedi 16 mai 2009 08:41
-
Le format n'est pas forcement word mais aussi wordpad (fourni dans Windows a l'origine)
Je pourrais peut être essayer de faire un contrôle (UserControl) avec toute les options, mais pas aujourd'hui :)
.
Cordialement, Troxsasamedi 16 mai 2009 08:48 -
D'accord, merci beaucoup pour votre aide.samedi 16 mai 2009 08:48