停靠对话框是指可以停靠在视图上下左右的对话框,创建的winform/WPF对话框,可以调用停靠对话框的接口,直接嵌入到框架之中。

平台停靠对话框相关的类主要在BPNewDockManager中,也是在BIMBaseNet.UI.dll中。BPNewDockManager包括的方法如表8-3所示。

表8-3 停靠对话框接口列表

方法 描述
void setWindowText(int,string) 设置对话框的标题
bool setDlg(UserControl) 设置需要嵌入的对话框
bool getDlgVisible(int) 获取某一dock是否显示
void ShowDockContainer(int,bool) 设置某一dock是否显示
void SetDockPosition(int,string) 设置对话框所有停靠的位置

代码片段8-7展示了创建停靠对话框的过程。在示例中,先创建一个用户自定义对话框,然后再创建一个停靠对话框,创建停靠对话框的同时,可以把对话框的标题设置上,接下来就可以调用setDlg,把创建的用户自定义对话框嵌入到停靠对话框中,根据业务具体的需求,设置停靠对话框的位置,位置的关键参数有5个,分别是“left”“right”“top”“bottom”“bottom-left”“left-DockTab”,代表的是左侧、右侧、上面、下面、左下侧、左侧页签面,最后就是设置创建的停靠框是否显示。至此完成停靠框的创建、嵌入winform、显隐控制等。

[BPExternalCommandAttribute(name = "DockCreateDemo")]
public class BPDockCreateCommand : IBPFunctionCommand
{
    public override void onExcute(BPCommandContext context)
    {
        UserControl ctr = BPNewDockManager.getDlg(0);
        if (ctr == null)
        {
            UserControl ctr1 = new UserControl();
            BPNewDockManager.setDlg(0, ctr1);
            BPNewDockManager.setWindowText(0,"testDock");
            BPNewDockManager.setDockPosition(0, "left");
        }
        BPNewDockManager.showDockContainer(0, true);
        base.onExcute(context);
    }
}

代码8-7 创建停靠对话框