Ajouter des Controls dans un panel

Ajouter des Controls dans un panel - C#/.NET managed - Programmation

Marsh Posté le 10-11-2006 à 09:44:15    

Bonjour,
 
J'implémente un panel dérivé d'un System.Windows.Forms.Panel.
Ce nouveau panel contiendra une entete fxe et un sous-panel contenant tout les controles que l'on voudra.
 
Mon probleme est que lorsque l'on ajoute un control, il s'ajoute dans le sous-panel et non dans le panel.
Je me disait qu'il faut donc que je joue avec le propriété this.Controls. il faut que this.Controls.add devienne this.SousPanel.Controls.add, idem pour les autres propriétés!
 
Comment puis je implémenter cela facilement?
 
D'avance merci de votre aide
 
ben  
 
 

Reply

Marsh Posté le 10-11-2006 à 09:44:15   

Reply

Marsh Posté le 10-11-2006 à 21:44:32    

pkoi tu ne créer pas toi même un user control dans lequel tu mettrais ce que tu as besoin (panel, combo, textbox, etc...) c'est fait pour ça

Reply

Marsh Posté le 13-11-2006 à 09:24:58    

Parceque j'hérite d'un composant déja créé et je n'ai pas envie de devoir réimplémenter tout.
De plus je n'ai pas envie d'un user control fixe mais de pouvoir récupérer ce composant pur plusieurs programmes avec des contenu totalement différents

Reply

Marsh Posté le 14-11-2006 à 17:19:27    

j'ai pas bien pigé ce que tu veux faire.
 
tu peux poster quelques screens de ce que tu veux ?

Reply

Marsh Posté le 14-11-2006 à 17:43:01    

Les puristes vont dire que je suis un gros goret, mais en tout cas ça marche, et c'est tout simple ;)
 

Code :
  1. using System;
  2. //using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Windows.Forms;
  5. namespace MagicPanel
  6. {
  7.     public class MagicPanel : Panel
  8.     {
  9.         private Panel SubPanel;
  10.         public MagicPanel()
  11.         {
  12.             this.BackColor = Color.Pink;
  13.             Label testLabel = new Label();
  14.             testLabel.Text = "test en-tête";
  15.             this.Controls.Add(testLabel);
  16.             SubPanel = new Panel();
  17.             SubPanel.BackColor = Color.Blue;
  18.             this.Controls.Add(SubPanel);
  19.             SubPanel.Top = testLabel.Height + 10;
  20.             SubPanel.Height = this.Height - testLabel.Height - 30;
  21.             SubPanel.Left = 10;
  22.             SubPanel.Width = this.Width - 30;
  23.         }
  24.         protected override void OnControlAdded(ControlEventArgs e)
  25.         {
  26.             //base.OnControlAdded(e);
  27.             if (this.Controls.Count > 2)
  28.             {
  29.                 this.SubPanel.Controls.Add(e.Control);
  30.                 this.Controls.Remove(e.Control);
  31.             }
  32.         }
  33.     }
  34. }


 

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. namespace WindowsApplication1
  9. {
  10.     public partial class Form1 : Form
  11.     {
  12.         public Form1()
  13.         {
  14.             InitializeComponent();
  15.         }
  16.         private void Form1_Load(object sender, EventArgs e)
  17.         {
  18.             Button testBtn = new Button();
  19.             testBtn.Text = "youpi";
  20.             this.magicPanel1.Controls.Add(testBtn);
  21.         }
  22.     }
  23. }

Reply

Marsh Posté le 14-11-2006 à 17:45:47    

http://magicbuzz.multimania.com/files/magicpanel.png

Reply

Marsh Posté le 14-11-2006 à 19:55:37    

pour faire ça autant faire un user control excuse moi

Reply

Marsh Posté le 15-11-2006 à 09:53:26    

je ne juge pas la demande, je ne fais que répondre à la question.
 
ceci dit, ça ne change rien que dans ton user control, t'auras toujours le même problème... le .Controls de ton user control ne sera pas le .Control du panel qu'il contient, donc dans tous les cas t'es condamné à faire le même genre de bidouille...

Reply

Marsh Posté le 15-11-2006 à 15:52:35    

C'est a tres peu de choses ce que je fesait déja mais, quand j'essaie de faire glisser un boutton dans mon panel, il me fait : "Child is not a child of this parent"

Reply

Marsh Posté le 15-11-2006 à 15:59:09    

je taist

Reply

Marsh Posté le 15-11-2006 à 15:59:09   

Reply

Marsh Posté le 15-11-2006 à 16:08:14    

en effet, ça fait potpot sur la moquette là...

Reply

Marsh Posté le 15-11-2006 à 16:47:50    

lol

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed