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 标识符关联的窗体实例。

