65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.96/5 (64投票s)

2009 年 10 月 2 日

CPOL

4分钟阅读

viewsIcon

334443

downloadIcon

16265

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

引言

这是 Crom.Controls.Docking 产品的第二版。

新功能

添加/更改了以下功能:

  • 复杂停靠:现在可以创建复杂的布局。

    Docking001_600x432.PNG

  • 鼠标悬停在自动隐藏按钮上时显示预览。

    Docking002_600x432.PNG

  • 使用 Ctrl+Tab 选择窗体。

    Docking003_600x432.PNG

  • 保存/加载布局。

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 标识符关联的窗体实例。
© . All rights reserved.