tags:

views:

157

answers:

1

I basically created 2 child controls and I want to set their width to be equal to the width of the parent composite control. The problem is when I do this using the parent.Size property, it doesn't work. It only works once when you add the control.

Am I supposed to override an event not a property? I thought the property change would be signaled with a resize, right?

EDIT:

Here is the code, property doesn't work, but the OnResize event worked.

Q2: Shouldn't OnResize EventArgs e give me the new size?

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;
 }
}
A: 

Do you have properties like Dock or Anchor set for your child controls in a way that would prevent them from being resized to arbitrary dimensions? I do this all of the time and simply setting a child control's Size, Width, or Height property has always worked for me. If my guess is wrong, it would help us to see your code.

EDIT: After seeing your comment, I think that you should be using Dock and/or Anchor. This way, you can lay out the child controls first and then, when the parent is resized, the child controls will follow suit with no extra work on your end.

Ed Swangren
No I don't use Dock and Anchor, but since the behaviour I want is similar, should I use them? I didn't know I could in a composite control. I am pretty new to composite controls.
Joan Venge