2009-10-05 27 views
0

我基本上创建了2个子控件,我想将它们的宽度设置为等于父组合控件的宽度。问题是当我使用parent.Size属性执行此操作时,它不起作用。它仅在添加控件时才起作用。如何更改winforms中复合控件中子控件的大小?

我应该重写一个事件而不是属性?我认为财产变动将以调整大小来表示,对吧?

编辑:

下面是代码,属性不起作用,但是onResize受到事件的工作。

Q2:不应该OnResize EventArgs e给我新的大小?

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

目前尚不清楚你现在在做什么,以及它如何工作。请显示一些代码。 – 2009-10-05 23:00:06

+0

对不起,你是对的。增加了一些代码。 – 2009-10-05 23:06:11

回答

0

您是否有像Dock或Anchor这样的属性为您的子控件设置方式,以防止它们被调整为任意尺寸?我一直这样做,只需设置一个子控件的大小,宽度或高度属性一直为我工作。如果我的猜测是错误的,它会帮助我们看到你的代码。

编辑:看到你的评论后,我认为你应该使用码头和/或锚。这样,您可以先布置子控件,然后在调整父项大小时,子控件将跟随您的目标,而不需要额外的工作。

+0

不,我不使用Dock和Anchor,但由于我想要的行为是类似的,我应该使用它们吗?我不知道我可以在一个复合控制。我对组合控件相当陌生。 – 2009-10-05 23:07:10

相关问题