DockPanel有人曰浮动窗体,也就是c#编辑器的样式,如下图:
浮动窗体可以浮动、停靠(上下左右)、分页(如上图的档案录入页面)。
以下记录以下使用方法:
(1)首先找到WeifenLuo.WinFormsUI.Docking.dll,下载WeifenLuo.WinFormsUI.Docking.dll组建(点击下载)。
(2)把该组建添加到引用,创建窗体1为主窗体,窗体2、窗体3为子窗体。把dockpanle工具添加上。
(3)主窗体代码:把dockpanle拖放到主窗体,添加代码 dockPanel1.DocumentStyle = DocumentStyle.DockingMdi;
(4)子窗体:子窗体继承自: WeifenLuo.WinFormsUI.Docking.DockContent , 不是继承自form;定义子窗体对象
form1 f1=new form1();
f1.ShowHint = DockState.Document;
f1.Show(dockPanel1);
显示效果即得到。
另外也记录下状态,下次打开时候任然保持,用以下方法加载记录状态:
(1)private DeserializeDockContent ddc;
(2)private IDockContent GetContentFromPersistString(string persistString)
{
if (persistString == typeof(f1).ToString())
return f1;
if (persistString == typeof(f2).ToString())
return f2;
else
{
return null;
}
}
(3)
string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
if (File.Exists(configFile))
dockPanel1.LoadFromXml(configFile, ddc);
ddc = new DeserializeDockContent(GetContentFromPersistString);
以上方法加载保存的状态,
string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
dockPanel1.SaveAsXml(configFile);
另外,要实现各个dockpanle子窗体之间的互动,例如,vs编辑器中,设计界面的时候,选择一个文本框,属性框中的属性随之改变,使用委托可以解决,可以参看本博客的委托应用1.