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文件。后来我知道这实际上是正确的答案,我又一次无意中发现了这个问题。无论如何,至少现在我们知道了答案,以备将来参考。