Visual Studio IDE 类似停靠容器 - 第二版






4.96/5 (64投票s)
Visual Studio IDE 类似停靠容器的第二版
引言
这是 Crom.Controls.Docking 产品的第二版。
新功能
添加/更改了以下功能:
- 复杂停靠:现在可以创建复杂的布局。
- 鼠标悬停在自动隐藏按钮上时显示预览。
- 使用 Ctrl+Tab 选择窗体。
- 保存/加载布局。
Using the Code
以下是使用该控件所需的基本步骤:
- 在您的项目中添加对 Crom.Controls.dll 程序集的引用。
- 将
DockContainer
控件放置在窗体上,并将其Dock
属性设置为DockStyle.Fill
。
将窗体添加到停靠指南容器中
首先,您需要使用以下方法将窗体添加到指南中:DockableFormInfo Add(Form form, zAllowedDock allowedDock, Guid formIdentifier)
参数如下:
form
:必须是窗体的一个非空、未处置的实例,并且应设置以下属性:FormBorderStyle = FormBorderStyle.SizableToolWindow
TopLevel = false
allowedDock
:允许窗体停靠的位置的枚举。formIdentifier
:与窗体关联的唯一标识符。在保存/恢复布局状态时将使用这些标识符,因此应在您的应用程序中将其定义为常量。
DockableFormInfo
对象。该对象包含有关被引导窗体的信息,并且在对窗体进行任何操作时 DockContainer
都需要它。
停靠已添加到容器的窗体
您可以通过调用以下方法之一来停靠先前已添加到容器的窗体:void DockForm(DockableFormInfo info, DockStyle dock, zDockMode mode)
void DockForm(DockableFormInfo info, DockableFormInfo infoOver, DockStyle dock, zDockMode mode)
info
:窗体信息的一个非空、未处置的实例,该信息在将窗体添加到指南后获得。dock
:窗体的初始停靠位置(必须是有效的停靠值,不能是DockStyle.None
)。mode
:初始停靠模式,取值为以下之一:zDockMode.Outer
:将窗体停靠在容器的某个边缘。zDockMode.Inner
:将窗体停靠在容器可用区域的中心附近。
infoOver
:您想要在其上方停靠窗体的窗体的信息。
取消停靠已停靠的窗体
您可以通过调用以下方法来取消停靠已停靠的窗体:void Undock(DockableFormInfo info, Rectangle hintBounds)参数如下:
info
:窗体信息的一个非空、未处置的实例,该信息在将窗体添加到指南后获得。hintBounds
:窗体取消停靠后的建议边界。
从容器中移除窗体
您可以通过调用以下方法从容器中移除窗体:void Remove(DockableFormInfo info)其中 info 是在将窗体添加到指南后获得的窗体信息的一个非空、未处置的实例。
获取已添加到容器中的窗体
您可以通过调用以下属性来获取已添加到容器中的窗体数量:int Count { get; }您可以通过调用以下属性来获取已添加到容器中的窗体的信息:
DockableFormInfo GetFormInfoAt(int index)其中 index 是窗体索引,有效值范围从 0(零)到 Count - 1。
切换已停靠窗口的自动隐藏模式
要切换已停靠窗口的自动隐藏模式,应调用以下方法:void SetAutoHide(DockableFormInfo info, bool autoHide)参数如下:
info
:已停靠窗体信息的一个非空、未处置的实例,该信息在将窗体添加到指南后获得。autoHide
:一个标志,指示是设置自动隐藏模式(true)还是取消设置(false)。
选择窗体
要选择一个窗体的输入焦点,应将与该窗体关联的DockableFormInfo
对象的 IsSelected
属性设置为 true。要截获窗体被选择/取消选择的时间,应连接到与该窗体关联的 DockableFormInfo
对象的 SelectedChanged
事件。
关联上下文菜单
要为被引导的窗体关联上下文菜单,应连接到DockContainer
控件的 ShowContextMenu
事件。此事件的处理程序应如下所示:void OnDockerShowContextMenu(object sender, FormContextMenuEventArgs e) { contextMenuStrip1.Show(e.Form, e.MenuLocation); }
阻止窗体关闭
要禁用窗体关闭,应连接到DockContainer
控件的 FormClosing
事件。此事件的处理程序应如下所示:void OnDockerFormClosing(object sender, DockableFormClosingEventArgs e) { DockableFormInfo info = _docker.GetFormInfo(e.Form); if (info.Id == new Guid("0a3f4468-080b-404e-b012-997b93ed2005")) { e.Cancel = true; } }
销毁已关闭的窗体
要销毁已关闭的窗体,应连接到DockContainer
控件的 FormClosed
事件。此事件的处理程序应如下所示:void OnDockerFormClosed(object sender, FormEventArgs e) { e.Form.Close(); }
保存/恢复容器布局
要保存/恢复容器布局,您需要使用DockStateSerializer
类型的对象。要保存容器布局,应从 DockStateSerializer
调用以下方法:void Save()布局状态默认保存在您应用程序的本地应用程序数据文件夹中。此默认路径由序列化器的
serializer.SavePath
属性提供,并且可以通过此成员进行更改。要加载容器布局,应从 DockStateSerializer
调用以下方法:void Load(bool clear, FormFactoryHandler formsFactory)参数如下:
clear
:一个标志,指示在恢复状态之前是否应清除停靠器中的所有现有窗体(建议值为 true)。formsFactory
:一个窗体工厂方法的处理程序。
Form CreateTestForm(Guid identifier)
。此方法应返回与给定 Guid 标识符关联的窗体实例。