Изменение размера TableLayoutPanel при изменении размера соседнего элемента управления - PullRequest
0 голосов
/ 18 марта 2020

Приложение WinForms. Одна из форм состоит из MenuStrip, пользовательского элемента управления LabelProgressBar ниже этого и TableLayoutPanel ниже этого.

Во время работы программы размер LabelProgressBar изменяется. TableLayoutPanel должен расширяться или сжиматься при изменении размера. Таким образом, если высота LabelProgressBar уменьшается до нуля, он должен выглядеть так, как если бы TableLayoutPanel и его содержимое находились непосредственно под MenuStrip.

enter image description here

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

Итак, были предприняты попытки с различными док-станциями и якорями меры для соответствующего контроля, и ни один не привел к требуемому поведению.

1 Ответ

1 голос
/ 18 марта 2020

Это прекрасно работает с двумя панелями - одна для верхней, с DockStyle.Top, и "основная" с DockStyle.Fill.

. Вы можете попробовать обернуть свой собственный элемент управления в панель и поэкспериментировать с закрепление или Fill ', если оно не пристыковано к вершине.

var form = new Form();

var shrinking = new Panel() 
{
    BackColor = Color.Red,
    Dock = DockStyle.Top
};
var filling = new TableLayoutPanel()
{
    BackColor = Color.Green,
    Dock = DockStyle.Fill
};

var timer = new System.Windows.Forms.Timer();
timer.Interval = 500;
timer.Tick += (s, a) =>
{
    shrinking.Height -= 10;
    if(shrinking.Height <= 0) {
        shrinking.Height = 0;
        timer.Stop();
    }
};

form.Shown += (s, a) => timer.Start();


// Just to make sure it works with a menu present   
var menu = new MenuStrip();
menu.Items.Add("&File");    

form.Controls.Add(shrinking);   
form.Controls.Add(filling); 
form.Controls.Add(menu);
form.ShowDialog();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...