如何在winforms中更改复合控件中子控件的大小?

时间:2009-10-05 22:59:04

标签: c# .net winforms

我基本上创建了2个子控件,我想将它们的宽度设置为等于父复合控件的宽度。问题是当我使用parent.Size属性执行此操作时,它不起作用。它只在你添加控件时才有效。

我是否应该覆盖不是属性的事件?我认为房产变更将通过调整大小发出信号,对吗?

编辑:

这是代码,属性不起作用,但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;
    }
}

1 个答案:

答案 0 :(得分:0)

您是否为子控件设置了Dock或Anchor等属性,以防止它们被调整为任意尺寸?我一直这样做,只是设置一个子控件的大小,宽度或高度属性一直对我有用。如果我猜错了,那将有助于我们查看您的代码。

编辑:看到你的评论后,我认为应该使用Dock和/或Anchor。这样,您可以先放置子控件,然后在调整父级调整大小时,子控件将会跟进,而不需要额外的工作。