首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

有关WeifenLuo.WinFormsUI.Docking.DockPanel的有关问题

2012-06-23 
有关WeifenLuo.WinFormsUI.Docking.DockPanel的问题最近想利用WeifenLuo.WinFormsUI.Docking.DockPanel做

有关WeifenLuo.WinFormsUI.Docking.DockPanel的问题
最近想利用WeifenLuo.WinFormsUI.Docking.DockPanel做个活动界面.
主窗体Form1,子窗体Form2

C# code
//Form1 Form1.IsMdiContainer = true;//使用dockpanel必须//包含一个dockpanel控件 dockpanel1//调用1.config文件恢复界面布局void LoadConfig(){  try{    dockpanel1.LoadFromXml(Application.StartupPath + "\\1.config",delegate(string str)    {if(str == typeof(Form2))return new Form2();return null;});  }catch  {  }}//FormClosing事件dockpanel1.SaveAsXml(Application.StartupPath + "\\1.config");//Form2Form2 : WeifenLuo.WinFormsUI.Docking.DockContent //子窗体必须{   DataGridView dgv; //具体代码不写了,已经绑定数据源   public void Test()   {      MessageBox.Show(dgv.CurrentRow.ToString());    }}


dll下载地址:https://sourceforge.net/projects/dockpanelsuite


主要代码就是这些了,存在的问题就是如果程序是手动设置布局.
例如:
Form2 f = new Form2(); 
f.Show(dockpanel1);

f.Test();
能获取datagridview对象

而如果程序启动的时候,利用LoadFromXml创建的Form2,在Form1中调用Form2.Test()方法总是会抛出异常,CurrentRow为null.
但是在Form2中调用Test()方法,仍然能正常执行.



[解决办法]
可能是dockpanel的BUG.
建议把匿名函数部分创建的Form提前构造出来.

热点排行