C# 是否有一个物体的目的是在形式上保持不确定的位置?
我有一张表格。在这个表单中有一个选项卡控件和一个菜单条。我希望选项卡控件占据整个表单的空间;但是,我不希望菜单条覆盖它的顶部 为了解决这个问题。我做了一个控件,使面板与菜单条的大小相同。我首先将面板控件添加到菜单条,然后添加选项卡控件;然而,我没有得到预期的结果。有人能告诉我如何得到我想要的结果吗 这是没有附加面板时的外观 下面是代码:C# 是否有一个物体的目的是在形式上保持不确定的位置?,c#,.net,winforms,user-interface,C#,.net,Winforms,User Interface,我有一张表格。在这个表单中有一个选项卡控件和一个菜单条。我希望选项卡控件占据整个表单的空间;但是,我不希望菜单条覆盖它的顶部 为了解决这个问题。我做了一个控件,使面板与菜单条的大小相同。我首先将面板控件添加到菜单条,然后添加选项卡控件;然而,我没有得到预期的结果。有人能告诉我如何得到我想要的结果吗 这是没有附加面板时的外观 下面是代码: public Main() { InitializeComponent(); //Panel placeho
public Main()
{
InitializeComponent();
//Panel placeholder = new Panel()
//{
// MaximumSize = menuStrip1.MaximumSize,
// MinimumSize = menuStrip1.MaximumSize,
// Size = menuStrip1.Size,
// Padding = menuStrip1.Padding,
// Visible = true,
//};
//placeholder.Dock = DockStyle.Top;
//Controls.Add(placeholder);
Controls.Add(InitNavigation());
}
TabControl InitNavigation()
{
//Declare All Variables
TabControl control = new TabControl();
TabPage queryPage = new TabPage();
TabPage tablePage = new TabPage();
control.TabPages.Add(queryPage);
control.TabPages.Add(tablePage);
//Customize Table Control
control.Top = menuStrip1.Size.Height;
control.Dock = DockStyle.Fill;
Padding Margin = control.Margin;
MessageBox.Show("" + menuStrip1.Size.Height);
//control.Margin = new Padding(Margin.Left,, Margin.Right, Margin.Bottom);
//Customize Query Tab
queryPage.Text = "Queries";
//Customize Table Page
tablePage.Text = "Tables";
control.Visible = true;
return control;
}
这是面板的外观
代码如下:
public Main()
{
InitializeComponent();
Panel placeholder = new Panel()
{
MaximumSize = menuStrip1.MaximumSize,
MinimumSize = menuStrip1.MaximumSize,
Size = menuStrip1.Size,
Padding = menuStrip1.Padding,
Visible = true,
};
placeholder.Dock = DockStyle.Top;
Controls.Add(placeholder);
Controls.Add(InitNavigation());
}
TabControl InitNavigation()
{
//Declare All Variables
TabControl control = new TabControl();
TabPage queryPage = new TabPage();
TabPage tablePage = new TabPage();
control.TabPages.Add(queryPage);
control.TabPages.Add(tablePage);
//Customize Table Control
control.Top = menuStrip1.Size.Height;
control.Dock = DockStyle.Fill;
Padding Margin = control.Margin;
MessageBox.Show("" + menuStrip1.Size.Height);
//control.Margin = new Padding(Margin.Left,, Margin.Right, Margin.Bottom);
//Customize Query Tab
queryPage.Text = "Queries";
//Customize Table Page
tablePage.Text = "Tables";
control.Visible = true;
return control;
}
最后。最后一张图片显示的是选项卡实际上就在那里(除了菜单条可见性设置为false之外,它的代码与发布的第一个代码相同)。
如果完全停靠控件位于顶部停靠控件下方,请尝试将完全停靠控件置于前端(在设计器中右键单击它并选择“置于前端”),这样可以解决此问题。我不确定这里缺少什么。如果我创建一个新的WinForm项目,在其上放置一个菜单条,然后添加一个tab控件,我所要做的就是将tab控件设置为Dock=Fill,这很完美。@JonB比我做得更好。。。我尝试了他做的同样的事情,结果也一样。。。tab控件没有覆盖菜单条。是否可能是因为我没有使用GUI而缺少一些设置?我现在正在试用。@JonB我想这是因为没有为navigation.Location设置System.Drawing.Point。当我使用GUI时,它工作得很好,我认为这是我能看到的唯一区别。我想可能没有办法完全动态地完成。GUI只是为您生成代码。用GUI绘制它,并查看.designer.cs文件。后来我知道这实际上是正确的答案,我又一次无意中发现了这个问题。无论如何,至少现在我们知道了答案,以备将来参考。