WeifenLuo.WinFormsUI.Docking.DockContent 獲得焦點(激活)

   

這幾天在試着用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);

 

發佈了57 篇原創文章 · 獲贊 13 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章