Vb.net 如何删除双表单标题栏?

Vb.net 如何删除双表单标题栏?,vb.net,Vb.net,我有一个mdi容器窗体,当它在里面打开一个子对象时,我会看到这个带有另一组关闭/最小化/最大化按钮和窗体图标的双标题栏。我怎样才能摆脱它?我已尝试将控件设置为false,但它不起作用FormBorderStyle到none也不起作用,它会使子窗体变形 另外,我有一个包含一些按钮的toolstrip,它的底部有一条恼人的边框线(查看我画的蓝色箭头)。我怎样才能禁用它呢 第一部分 对于你问题的第一部分,@RezaAghaei先生发布的解决方案可能是答案。以下是VB.NET版本: 公共类YourPa

我有一个mdi容器窗体,当它在里面打开一个子对象时,我会看到这个带有另一组关闭/最小化/最大化按钮和窗体图标的双标题栏。我怎样才能摆脱它?我已尝试将
控件设置为
false
,但它不起作用
FormBorderStyle
none
也不起作用,它会使子窗体变形

另外,我有一个包含一些按钮的toolstrip,它的底部有一条恼人的边框线(查看我画的蓝色箭头)。我怎样才能禁用它呢

第一部分


对于你问题的第一部分,@RezaAghaei先生发布的解决方案可能是答案。以下是VB.NET版本:

公共类YourParentForm
'或者在设计器中添加一个。。。
专用只读容器面板As面板
次新
初始化组件()
IsMdiContainer=False
ContainerPanel=带有{.Dock=DockStyle.Fill}的新面板
控件。添加(ContainerPanel)
端接头
末级
以及创建子窗体的位置:

Dim f作为具有
{
.FormBorderStyle=FormBorderStyle.None,
.TopLevel=False,
.ControlBox=False,
.Dock=DockStyle.Fill,
}
ContainerPanel.Controls.Add(f)
f、 Show()
由于最后插入到集合中的控件是首先停靠的,因此需要显式设置控件的顺序,以避免任何可能的停靠重叠。因此,正如您在评论中注意到并提到的,
Dock.Fill
表单与
Dock.Top
标签重叠。要解决这个问题:

Dim f作为具有
{
.FormBorderStyle=FormBorderStyle.None,
.TopLevel=False,
.ControlBox=False,
.Dock=DockStyle.Fill
}
ContainerPanel.Controls.Add(f)
控件。SetChildIndex(ContainerPanel,0)
控件。SetChildIndex(标签1,1)
f、 Show()
事实上,您可以省略
控件。SetChildIndex(Label1,1)
,只是为了澄清这个想法而添加的

如果您正在使用设计器添加
容器面板
,选择它并右键单击,您将在上下文菜单中看到用于执行相同操作的
前置
后置
。此外,您还可以使用文档大纲窗口(Ctrl+T显示)更改控件的顺序,使用上/下箭头和左/右箭头将控件移动到不同的容器

第二部分


至于第二部分,您需要创建一个新类,该类继承并重写属性,以防止在呈现ToolStrip时返回默认颜色:

公共类CustomColorTable
继承颜色表
公共覆盖只读属性ToolStripBorder作为颜色
得到
返回颜色。空
结束
端属性
末级
然后,将自定义颜色表传递给该类的新实例,并将其指定给或属性

重新访问父窗体的构造函数:

subnew()
初始化组件()
ContainerPanel=带有{.Dock=DockStyle.Fill}的新面板
控件。添加(ContainerPanel)
ToolStrip1.Renderer=新的ToolStripProfessionalRenderer(新的CustomColorTable),带有{
.RoundedEdges=False
}
”“或者
'ToolStripManager.Renderer=新的ToolStripProfessionalRenderer(新的CustomColorTable),带有{
'.roundedges=False
'}
端接头

MDI就是这样工作的。这些按钮允许在父窗口中控制子窗口。如果您不希望出现这种行为,请不要使用MDI。在子窗体调整大小事件中,您可以
BeginInvoke()
其MDI父对象,并删除其
main菜单中的第一个项(在子窗体最大化后-这就是为什么需要
BeginInvoke()
-,第一个菜单项是子窗体系统菜单图标)。你不会再看到最左边的图标了。其他按钮最好留在原来的位置,但现在菜单条看起来不像另一个标题栏。也许这就足够了。当然,在调整大小事件中,您需要检查子窗体是否
WindowState=FormWindowState.Maximized
,否则您将从父窗体的菜单列表中删除所有菜单:)谢谢您的回复!问题的第一部分:你给我的解决方案有效。标题栏消失了,但您可以在我的图片中看到的标签(在按钮下面,上面写着“Crear client”)变为隐藏,工具条覆盖了它。你知道我该怎么解决吗?