Crom.Controls.Docking 控件使用指南

Crom.Controls.Docking 是一个用于.NET应用程序的控件,它允许开发者创建和管理复杂的布局。本文将介绍如何在项目中使用这个控件,包括添加表单、停靠、撤销停靠、移除表单以及如何保存和恢复布局状态。

新增功能

Crom.Controls.Docking 的第二版带来了以下新增和更改的功能:

  • 复杂停靠:现在可以创建复杂的布局。
  • 鼠标悬停在自动隐藏按钮上的预览。
  • 使用 Ctrl+Tab 选择表单。
  • 保存/加载布局。

使用控件的基本步骤

要在项目中使用 Crom.Controls.Docking 控件,请按照以下步骤操作:

  1. 在项目中添加对 Crom.Controls.dll 程序集的引用。
  2. 在表单上放置一个 DockContainer 控件,并将 Dock 属性设置为 DockStyle.Fill。

向 DockContainer 添加表单

首先,需要使用以下方法向 guider 添加表单:

DockableFormInfo Add(Form form, zAllowedDock allowedDock, Guid formIdentifier)

参数说明:

  • form:需要引导的表单实例,不能为 null,不能被处置,并且需要设置以下属性:
    • FormBorderStyle = FormBorderStyle.SizableToolWindow
    • TopLevel = false
  • allowedDock:表单允许停靠的位置的枚举值。
  • formIdentifier:与表单关联的唯一标识符。这些标识符将在保存/恢复布局状态时使用,因此它们应该在应用程序中定义为常量。

停靠表单

可以使用以下方法之一将之前添加到容器中的表单停靠:

void DockForm(DockableFormInfo info, DockStyle dock, zDockMode mode) void DockForm(DockableFormInfo info, DockableFormInfo infoOver, DockStyle dock, zDockMode mode)

参数说明:

  • info:添加表单到 guider 后获得的表单信息的实例,不能为 null,不能被处置。
  • dock:表单的初始停靠值(必须是有效的停靠值,不能是 DockStyle.None)。
  • mode:初始停靠模式,可以是以下值之一:
    • zDockMode.Outer:将表单停靠在容器的边缘。
    • zDockMode.Inner:将表单停靠在容器自由区域的中心附近。
  • infoOver:想要在其上方停靠表单的表单信息。

撤销停靠表单

可以通过调用以下方法来撤销停靠表单:

void Undock(DockableFormInfo info, Rectangle hintBounds)

参数说明:

  • info:添加表单到 guider 后获得的表单信息的实例,不能为 null,不能被处置。
  • hintBounds:表单撤销停靠后建议的边界。

从容器中移除表单

可以通过调用以下方法从容器中移除表单:

void Remove(DockableFormInfo info)

参数说明:

  • info:添加表单到 guider 后获得的表单信息的实例,不能为 null,不能被处置。

获取容器中添加的表单

可以通过调用以下属性获取容器中添加的表单数量:

int Count { get; }

可以通过调用以下属性获取容器中添加的表单信息:

DockableFormInfo GetFormInfoAt(int index)

参数说明:

  • index:表单索引,有效值从 0(零)到 Count - 1。

切换停靠窗口的自动隐藏模式

要切换停靠窗口的自动隐藏模式,应该调用以下方法:

void SetAutoHide(DockableFormInfo info, bool autoHide)

参数说明:

  • info:添加表单到 guider 后获得的停靠表单信息的实例,不能为 null,不能被处置。
  • 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:标志,指示在恢复状态之前是否应该清除 docker 中的所有现有表单(推荐值为 true)。
  • formsFactory:一个表单工厂方法的处理程序。

表单工厂方法的签名是:

Form CreateTestForm(Guid identifier)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485