2009-10-05 30 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

相關問題