2012-07-26 112 views
0

我正在處理一個具有數百個表單的表單,並且每個表單都以多種方式鏈接。覆蓋winforms OnLoad導致錯誤創建處理程序錯誤

什麼問題是我想申請認證形式。

我所做的是在我的案件的共同類繼承所有形式是「AUTH

在驗證我所做的是什麼重寫的OnLoad方法,在這裏檢查,如果某些條件滿足,則顯示形式否則隱藏它並顯示其他形式。

我的代碼是:

public class Auth : Telerik.WinControls.UI.RadForm 
{ 

    protected override void OnLoad(EventArgs e) 
    { 
     if (<Some Condition>) 
     { 
      base.Hide(); 

      frmAccessDenied fs = new frmAccessDenied(); 

      fs.Show(); 

      base.OnLoad(e); 

     } 
     else 
     { 
      base.OnLoad(e); 
     } 

    } 

} 

在這種情況下,發生了什麼事是它打開frmAccessDenied但應用程序崩潰說錯誤創建HANDLER

,並指出我在哪裏打開表單像

         Form childForm = new frmMyFORM(); 
             childForm.MdiParent = this; 
     **==>>>Crashed HERE**   childForm.Show(); 

回答

0

MDI Parent是錯誤。

Form childForm = new frmMyFORM(); 
            childForm.MdiParent = this; 
    **==>>>Crashed HERE**   childForm.Show(); 

如果我跳過代碼

childForm.MdiParent = this; 

然後寄託都工作過。

0

您可以檢查主程序文件中的條件。在Main方法中,您將會看到類似於:

public static void Main(string[] args) { 
    // Starts the application. 
    if (<Some Condition>) 
    { 
     Application.Run(new frmAccessDenied()); 
    } 
    else Application.Run(new Form1()); 
} 
+0

我需要爲每一個應用授權。例如,我們打開form1然後從form1打開form2,在這種情況下,我不認爲Main函數會被調用 – Moons 2012-07-27 04:48:22