在 WinForms 中修改停靠布局

     2023-02-24     218

关键词:

【中文标题】在 WinForms 中修改停靠布局【英文标题】:Modify docking layout in WinForms 【发布时间】:2013-07-10 21:05:01 【问题描述】:

我的表单上有一个SplitContainer,其 Dock 属性设置为 Fill。它包含几个子控件,其中许多都附加了事件处理程序。后来我决定在我的表格底部放一个StatusStrip。你猜怎么着,我无法将StatusStrip 设置为停靠在我的表单底部。 SplitContainer 将继续填写整个表格。尽管StatusStrip 显然停靠在底部,但它实际上隐藏了SplitContainer 的底部部分。

唯一的方法是剪切SplitContainer,然后将其粘贴回去。剪切SplitContainer 使StatusStrip 成为我表单上的唯一控件,从而让它捕获底部停靠。之后,粘贴SplitContainer 使其填充剩余区域。总之,对接采用先到先服务的方式。

现在,由于我的控件附加了许多事件处理程序,因此剪切和粘贴对我来说是一场噩梦。在 C# 中拥有我的项目意味着我必须手动附加所有这些事件处理程序。

有更好的解决方法吗?

【问题讨论】:

【参考方案1】:

这是拆分器和状态条之间的 z 顺序问题。当您有一个要停靠填充的控件和一个或多个要停靠顶部、左侧、右侧或底部的控件时,您必须让填充控件位于 z 顺序中的第一个。

更好的方法是打开 Document Outline 工具,选择 SplitContainer 并使用向上或向下按钮更改其 z 顺序。

我应该补充一点,在 Winforms 中,z 顺序由您将控件添加到 Controls 集合的顺序指定。该顺序决定了相关系统控件的创建顺序,因此决定了它们的 z 顺序。使用 Document Outline 工具更改 z-order 只会导致生成的代码重新排序。

【讨论】:

正是我需要的。非常感谢。

为啥在 C# Winforms 中控件停靠到其父级时,设计器设置了控件的“大小”属性?

】为啥在C#Winforms中控件停靠到其父级时,设计器设置了控件的“大小”属性?【英文标题】:Whyisthe"Size"propertyofacontrolsetbythedesignerwhenthecontrolisdockedtoitsparentinC#Winforms?为什么在C#Winforms中控件停靠到其父级时,设计器设置... 查看详情

Winforms:啥决定了停靠是不是移动其他控件

】Winforms:啥决定了停靠是不是移动其他控件【英文标题】:Winforms:WhatDeterminesifDockingMovesOtherControlsWinforms:什么决定了停靠是否移动其他控件【发布时间】:2014-02-1815:33:18【问题描述】:例如,在TabPage中,我有一个停靠在“填... 查看详情

使用自定义 WinForms 控件,我可以更改嵌套控件停靠在里面的矩形吗?

】使用自定义WinForms控件,我可以更改嵌套控件停靠在里面的矩形吗?【英文标题】:WithacustomWinFormscontrol,canIchangetherectanglethatnestedcontrolsdockinside?【发布时间】:2016-02-1719:01:57【问题描述】:我正在尝试创建一个行为类似于GroupBo... 查看详情

在 Avalandock 中禁用“停靠为选项卡式文档”

】在Avalandock中禁用“停靠为选项卡式文档”【英文标题】:Disabling\'DockasTabbeddocument\'inAvalandock【发布时间】:2017-08-1010:23:18【问题描述】:目前我们开发了一个GUI,其中包含使用Avalondock2.0的自定义布局。布局具有提供的默认上... 查看详情

wpf教程四;布局之dockpanel面板

DockPanel:停靠面板     DockPanel定义一个区域,在此区域中,您可以使子元素通过描点的形式排列,这些对象位于Children属性中。停靠面板类似于WinForm中控件的Dock属性。DockPanel会对每个子元素进行排序,并将根据... 查看详情

VS2019 WinForms 在诊断工具中没有显示任何事件

】VS2019WinForms在诊断工具中没有显示任何事件【英文标题】:VS2019WinFormsnoeventsshowingupinDiagnosticsTool【发布时间】:2020-01-0900:11:19【问题描述】:我尝试使用WinForms创建简单的应用程序。使用设计器,我添加了几个按钮文本字段等... 查看详情

停靠窗口可以停靠在任何地方或仅停靠在顶部、底部、左侧、右侧吗?

...】:2012-12-0517:12:51【问题描述】:我需要在我的UI(WPF、WinForms)中使用很多这样的窗口说一个带有文本“设置”的标签,当鼠标悬停时,会出现一个窗口,当鼠标移开时,窗口会消失。标签和窗口应该排列起来,看起来好像它 查看详情

winforms - 表单加载期间带有dockstyle填充的用户控件大小不正确

】winforms-表单加载期间带有dockstyle填充的用户控件大小不正确【英文标题】:winforms-usercontrolwithdockstylefillnotcorrectsizeduringformload【发布时间】:2011-05-2518:44:17【问题描述】:我的主窗体有两个面板,左停靠和右停靠。右侧面板有... 查看详情

在 .NET WinForms 中获取 MFC Feature Pack GUI 元素

】在.NETWinForms中获取MFCFeaturePackGUI元素【英文标题】:ObtainingMFCFeaturePackGUIelementsin.NETWinForms【发布时间】:2011-03-0212:52:00【问题描述】:MFC功能包(和VS2010)为几个“现代”GUI元素(例如带有选项卡式文档的MDI、功能区和带有停... 查看详情

停靠面板的 DevExpress 动态停靠

】停靠面板的DevExpress动态停靠【英文标题】:DevExpressdynamicdockingofdockpanels【发布时间】:2013-01-2805:09:02【问题描述】:我希望将停靠面板停靠到现有停靠面板。我目前的布局如下。窗口左侧是设置停靠面板。右侧是另一个停靠... 查看详情

在 Winforms 生成的 .Designer.cs 文件中修改 Dispose(bool) 时,是不是需要将 Dispose 移至主代码文件?

】在Winforms生成的.Designer.cs文件中修改Dispose(bool)时,是不是需要将Dispose移至主代码文件?【英文标题】:WhenmodifyingDispose(bool)inawinformsgenerated.Designer.csfileisitnecessarytomoveDisposetothemaincodefile?在Winforms生成的.Designer.cs文件中修改Dispose(... 查看详情

WinForms线程间修改

】WinForms线程间修改【英文标题】:WinFormsinterthreadmodification【发布时间】:2009-07-1015:59:57【问题描述】:每当我想从另一个线程修改一个winform时,我都需要使用->Invoke(delegate,params)以便修改发生在winform自己的线程中。对于... 查看详情

wpf入门教程系列九——布局之dockpanel与viewbox

...元素通过描点的形式排列,这些对象位于Children属性中。停靠面板其实就是在WinForm类似于Dock属性的元素。DockPanel会对每个子元素进行排序,并停靠在面板的一侧,多个停靠在同侧的元素则按顺序排序。   如果将LastChildFill属... 查看详情

WinForms 不同的 DPI 布局

】WinForms不同的DPI布局【英文标题】:WinFormsDifferentDPILayouts【发布时间】:2010-12-2311:34:34【问题描述】:不知何故,通过VisualStudio和设计器创建的表单和控件能够根据Windows的当前DPI/字体大小自行缩放。我的UI的一部分是一个选项... 查看详情

WinForms MdiContainer 菜单

】WinFormsMdiContainer菜单【英文标题】:WinFormsMdiContainerMenu【发布时间】:2014-02-0915:32:35【问题描述】:所有,我有一个WinFormsMDI控件,并在其中停靠了几个子窗口。当我第一次这样做时,我设法(以某种方式)摆脱了窗口列表(... 查看详情

无法更改停靠小部件填充

】无法更改停靠小部件填充【英文标题】:Cannotchangedockwidgetpadding【发布时间】:2014-03-2117:03:34【问题描述】:我正在尝试创建一个包含在没有填充的QDockWidget中的QTabWidget,以便标签小部件到达QDockWidget的边缘。您可以在下面的... 查看详情

在 C# (WinForms) 中拦截应用程序中所有控件的单击事件

】在C#(WinForms)中拦截应用程序中所有控件的单击事件【英文标题】:InterceptingclickeventforallcontrolsinanappinC#(WinForms)【发布时间】:2011-05-1520:24:01【问题描述】:我想制作一个应用程序来拦截我应用程序所有形式的所有UI事件并将它... 查看详情

在本机 C++ 中停靠控件

】在本机C++中停靠控件【英文标题】:DockacontrolinnativeC++【发布时间】:2010-02-0300:57:25【问题描述】:我知道如何在.Net中执行此操作,但在本机Win32中,如何停靠控件。我正在尝试停靠我制作的轨迹栏,就像vlc的轨迹栏一样。谢... 查看详情