调整相邻控件的大小时,调整TableLayoutPanel的大小

时间:2020-03-17 22:33:11

标签: c# .net winforms user-interface

WinForms应用程序。其中一种形式由MenuStrip,其下的自定义控件LabelProgressBar和其下的TableLayoutPanel组成。

程序正在运行时,LabelProgressBar的大小已更改。 TableLayoutPanel应该随着调整大小而扩展或收缩。因此,如果LabelProgressBar的高度减小到零,则看起来TableLayoutPanel及其内容就在MenuStrip的正下方。

enter image description here

如果有帮助,可以包含屏幕截图。

因此,已经进行了各种尝试,以对各种码头和锚点进行适当的控制,但均未导致所需的行为。

1 个答案:

答案 0 :(得分:1)

这与两个面板完美配合-一个用于顶部,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();
相关问题