WinForms应用程序。其中一种形式由MenuStrip
,其下的自定义控件LabelProgressBar
和其下的TableLayoutPanel
组成。
程序正在运行时,LabelProgressBar
的大小已更改。 TableLayoutPanel
应该随着调整大小而扩展或收缩。因此,如果LabelProgressBar
的高度减小到零,则看起来TableLayoutPanel
及其内容就在MenuStrip
的正下方。
如果有帮助,可以包含屏幕截图。
因此,已经进行了各种尝试,以对各种码头和锚点进行适当的控制,但均未导致所需的行为。
答案 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();