WinForms应用程序。其中一种形式包括一个MenuStrip
,一个LabelProgressBar
位于其下方的自定义控件,以及一个TableLayoutPanel
位于其下方的自定义控件。
程序运行时,的大小LabelProgressBar
会更改。TableLayoutPanel
调整大小时,应当扩大或收缩。因此,如果将的高度LabelProgressBar
降低为零,则看起来TableLayoutPanel
和的内容就在的正下方MenuStrip
。
如果有帮助,可以包含屏幕截图。
因此,已经进行了各种尝试以进行适当的控制的各种码头和锚固装置,但是都没有导致所需的行为。
这与两个面板完美配合-一个面板位于顶部,带有DockStyle.Top
,而“主要” 面板具有DockStyle.Fill
。
您可以尝试将自定义控件包装在面板中,并尝试进行锚定或Fill
“ ing”(如果无法正确停靠在顶部)。
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();