2009-10-05 6 views
0

J'ai fondamentalement créé 2 contrôles enfants et je veux définir leur largeur pour être égale à la largeur du contrôle composite parent. Le problème est lorsque je fais cela en utilisant la propriété parent.Size, cela ne fonctionne pas. Cela ne fonctionne qu'une fois lorsque vous ajoutez le contrôle. Est-ce que je suis censé remplacer un événement et non une propriété? Je pensais que le changement de propriété serait signalé avec un redimensionnement, non?Comment modifier la taille des contrôles enfants dans un contrôle composite dans Winforms?

EDIT:

Voici le code, la propriété ne fonctionne pas, mais l'événement OnResize travaillé.

Q2: Ne devrait pas OnResize EventArgs e me donner la nouvelle taille?

public partial class CollapsableCtrl : UserControl 
{ 
    public CollapsableCtrl () 
    { 
     this.ChildCtrl = new CustomCtrl (); 
     this.Size = new Size (181, 82); 
     this.Controls.Add (this.ChildCtrl); 
    } 

    CustomCtrl ChildCtrl { get; set; } 

    public new Size Size 
    { 
     get { return base.Size; } 
     set 
     { 
      this.ChildCtrl.Size = value; 
      Invalidate (); 
     } 
    } 

    protected override void OnResize (EventArgs e) 
    { 
     base.OnResize (e); 
     this.ChildCtrl.Size = this.Size; 
    } 
} 
+0

Il n'est pas clair ce que vous faites maintenant, et comment cela ne fonctionne pas. S'il vous plaît montrer du code. –

+0

Désolé, vous avez raison. Ajouté du code. –

Répondre

0

Avez-vous des propriétés comme jeu Dock ou d'ancrage pour vos contrôles enfants d'une manière qui les empêcherait d'être redimensionnée aux dimensions arbitraires? Je fais cela tout le temps et la simple définition de la propriété Taille, Largeur ou Hauteur d'un contrôle enfant a toujours fonctionné pour moi. Si ma supposition est fausse, cela nous aiderait à voir votre code.

EDIT: Après avoir vu votre commentaire, je pense que vous devrait utiliser Dock et/ou Anchor. De cette façon, vous pouvez d'abord disposer les contrôles enfants, puis, lorsque le parent est redimensionné, les contrôles enfants suivront, sans travail supplémentaire de votre côté.

+0

Non, je n'utilise pas Dock et Anchor, mais comme le comportement que je veux est similaire, devrais-je les utiliser? Je ne savais pas que je pouvais dans un contrôle composite. Je suis assez nouveau pour les contrôles composites. –

Questions connexes