现在的位置: 首页 > 综合 > 正文

WeifenLuo.WinFormsUI.Docking.DockContent 获得焦点(激活)

2018年04月09日 ⁄ 综合 ⁄ 共 915字 ⁄ 字号 评论关闭

   

这几天在试着用WeifenLuo.WinFormsUI.Docking控件,想点击相应的按钮弹出的继承了DockContent的某个窗体,若载次点击该按钮就使已经有了的窗体获得焦点(active 激活)而不是重新初始化窗体。看下载的资料是把窗体作为父窗体的全局变量,当点击按钮是userList.Show(this.dockPanel1);就可以了。照样做来出现问题:当你关掉窗体后再点击按钮会异常:访问已经释放的资源。(下载的资料是没有这个问题的,没有研究出是因为什么)。后来想只能实例化一个类那就使用单件模式,不过那要把窗体改成单件类,要把构造方法改为私有,同步,第一有点麻烦,二这样还是解决不了问题,因为虽然一个实例的问题解决了可获得焦点的问题还是没有解决。最后只能去WeifenLuo.WinFormsUI.Docking.dockPanel的属性里找。
下面是解决的办法(应该有好点的,下载资料并不是这样做的):
先遍历this.dockPanel1.Contents看用没用你要初始化的窗体,有就让他获得焦点,没有new。代码很简单,不过找到这个还是费了力气的!!

 

代码:

            for (int i = 0; i < this.dockPanel1.Contents.Count; i++)
            {
                if (this.dockPanel1.Contents[i].GetType().ToString() == "SDRC.DataBase.Users")
                {
                    //获得焦点
                    this.dockPanel1.ActivePane.ActiveContent = this.dockPanel1.Contents[i];
                    return;
                }
            }
            Users userList = new Users();
            userList.Show(this.dockPanel1);

 

抱歉!评论已关闭.