程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> winform中防止重復打開多個相同子窗體

winform中防止重復打開多個相同子窗體

編輯:關於.NET

非MDI窗體:

private  bool SHowOpen(string frmName)

{

     foreach (Form frm in Application.OpenForms) //遍歷已打開窗口
    {
         if (frm.name ==  frmName)                         //如果此窗口已打開
         {
              frm.Activate()             //激活當前窗體

              if(frm.WindowState==FormWindowState.Minimized)       //如果當前窗體已經最小化

              {

                frm.WindowState=FormWindowState.Normal;              //還原窗體
              }  
           return true;
       }
     }

   return false;

}

MDI窗體:

private bool ShowChildrenForm(string p_ChildrenFormText) 
{     int i;     //依次檢測當前窗體的子窗體     
      for (i = 0; i < this.MdiChildren.Length; i++)      
       {                                                                                              
            if (this.MdiChildren[i].Text == p_ChildrenFormText)          //判斷當前子窗體的Text屬性值是否與傳入的字符串值相同
            {                                                   
                   this.MdiChildren[i].Activate();                                     //如果值相同則表示此子窗體為想要調用的子窗體,激活此子窗體並返回true值
                   return true;    

            }     
      }                             
        return false;                               //如果沒有相同的值則表示要調用的子窗體還沒有被打開,返回false值     

 }    
在使用MDI子窗體時,如果僅僅是使用 from.show() 代碼,那麼我們單擊幾次菜單,就會打開幾個同樣的子窗體。可以用這段代碼防止這種情況。    首先添加一個函數,這個函數用於檢測指定的子窗體是否已經打開,如果打開則激活這個子窗體,否則返回false值    然後在調用子窗體的方法中寫入如下代碼    
if ( ! ShowChildrenForm("子窗體的Text屬性值") ) 
{       
Form newForm = new Form();  
newForm.MdiParent = this;        
newForm.Show(); }     
這樣在調用子窗體時,會判斷是否已經打開此窗體的相同實例,如果是則激活打開的窗體,不是的話才會再打開一個新的實例

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved