c#工具栏不能停靠在菜单栏下

本文关键字:菜单栏 停靠 工具栏 不能 | 更新日期: 2023-09-27 17:49:37

我使用表单设计器创建了一个菜单栏。然后,我想以编程方式在菜单栏下添加工具栏工具栏。原因是这个工具栏是我作为插件添加到主应用程序中的一组工具。因此,当插件加载时,我创建了工具栏。

当我使用表单设计器手动将工具栏添加到表单时,工具栏正确地定位在菜单栏下面。但是,当我以编程方式添加它时,它会捕捉到表单的最顶部,菜单栏上方。下面是我用来以编程方式添加工具条的代码:

stereoBar = new ToolStrip();
stereoBar.Anchor = (AnchorStyles)(AnchorStyles.Top | AnchorStyles.Left);
//y location is set to 22, the width of the menustrip
stereoBar.Location = new System.Drawing.Point(0, 22);
stereoBar.Dock = DockStyle.Top;
stereoBar.Name = "StereoToolbar";
stereoBar.Text = "Stereo Plugin Toolbar";
stereoBar.ShowItemToolTips = true;
stereoBar.GripMargin = new Padding(2);
Controls.Add(stereoBar);

有什么简单的我错过了这里吗?

提前感谢!

c#工具栏不能停靠在菜单栏下

正如这个答案中所描述的,当在表单中对接控件时,将它们添加到表单的顺序很重要;例如,当添加多个控件都停靠在顶部时,最后添加的控件将是最顶部的

所以,因为你是通过编程方式添加工具栏和通过设计器添加菜单栏的,所以设计器代码首先被执行,因此菜单栏总是在底部。

我认为有三种方法可以摆脱困境:

第一种方法

正如汉斯·帕桑特所指出的那样,使事情有序的最简单的方法就是简单地调用

stereoBar.BringToFront();

就在你把它添加到窗体控件之后。

第二种方法

为了避免这种情况,您还可以使用add the menu strip programmatically and do this after you added the tool strip .

第三种方法

另一种方法可能是通过设计器向表单添加另一个容器(例如Panel或groupbox),该容器也停靠在顶部,只是作为占位符,您可以将工具条添加到(因此您不再直接添加到表单)