Изменение размера элемента управления PropertyGrid - PullRequest
0 голосов
/ 04 сентября 2011

Я написал код, который изменит размер элемента управления и всех его элементов управления, но есть проблема с PropertyGrid.Пользовательский интерфейс - это GroupBox, который содержит TabControl tabContAll.В tabContAll есть TabPage, который содержит PropertyGrid.

private void ResizeUI () 
{
    ui.Location = new Point (this.ClientRectangle.Left, this.ClientRectangle.Top + menubar.Height);
    ui.Size = new Size (this.ClientRectangle.Width, this.ClientRectangle.Height - menubar.Height);
    ResizeControl (tabContAll, ui);
}

private void ResizeControl (Control control, Control parent) 
{
    control.Location = new Point (parent.ClientRectangle.Left, parent.ClientRectangle.Top);
    control.Size = new Size (parent.ClientRectangle.Width, parent.ClientRectangle.Height);

    foreach (Control child in control.Controls) {
        ResizeControl (child, control);
    }
}

Эта функция вызывается при загрузке формы, и это то, на что это похоже по сравнению с тем, если я закомментировал изменение размера вцикл, поэтому размер PropertyGrid не изменяется:

enter image description here

enter image description here

Кроме того, при изменении размера описание не работает.Он просто показывает название объекта.

1 Ответ

3 голосов
/ 04 сентября 2011

Я настоятельно рекомендую вам не писать код для изменения размера элементов управления, если вам не нужно очень очень нестандартное поведение.

Вместо этого задайте Control.Dock или Control.Anchor свойств и оставьте остальные для них.

Например, ваш случай можно легко решить, установив для свойства Dock значение DockStyle.Fill для ваших TabControl и PropertyGrid (и, очевидно, удалив пользовательские методы изменения размера).

Вот полное описание MSDN Walkthrough для пользовательских элементов управления WinForms:

http://msdn.microsoft.com/en-us/library/6hws6h2t.aspx

...