Как изменить размер дочерних элементов управления в составном элементе управления в winforms? - PullRequest
0 голосов
/ 06 октября 2009

Я в основном создал 2 дочерних элемента управления и хочу установить их ширину равной ширине родительского составного элемента управления. Проблема в том, что когда я делаю это, используя свойство parent.Size, оно не работает. Он работает только один раз, когда вы добавляете элемент управления.

Должен ли я переопределить событие, а не собственность? Я думал, что изменение свойства будет сигнализироваться с изменением размера, верно?

EDIT:

Вот код, свойство не работает, но событие OnResize сработало.

Q2: Разве OnResize EventArgs не может дать мне новый размер?

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 голосов
/ 06 октября 2009

Есть ли у вас такие свойства, как Dock или Anchor, установленные для ваших дочерних элементов управления таким образом, чтобы они не могли быть изменены до произвольных размеров? Я делаю это все время, и просто настройка свойства Size, Width или Height дочернего элемента управления всегда работала для меня. Если мое предположение неверно, это поможет нам увидеть ваш код.

РЕДАКТИРОВАТЬ: После просмотра вашего комментария, я думаю, что вы должны использовать Dock и / или Anchor. Таким образом, вы можете сначала расположить дочерние элементы управления, а затем, когда размер родительского элемента будет изменен, дочерние элементы управления последуют его примеру без дополнительной работы с вашей стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...