2013-01-04 53 views
0

我有大約15個表單,每個表單都包含一些類似的代碼。在打開表格之前要執行的全局函數

我想知道的是,有什麼辦法可以在窗體打開時自動調用包含該特定代碼段的函數?

喜歡,可以說我想每次加載任何形式的項目時顯示Hello World消息。

所以我可以做的是我可以創建一個模塊或類文件,我可以添加一段代碼,我可以在每種形式中調用它。

但是,我不想要的是,我想要的是,有什麼辦法可以添加這段代碼,並自動填充/觸發時,窗體被加載。

也許我們可以把它像 - 自動錶單

一樣,每當一個表單自動打開類或函數被調用,而不在特定形式定義它調用函數。也許是一種類型的東西,當一個表單被加載時會被調用,我可以在那裏添加我的代碼片段並執行它。

+0

你可以從單個基類派生所有表單嗎?而這個基類派又是從原始的繼承類派生的?然後,你可以在構造函數 – freefaller

回答

3

創建自己的基類的形式繼承:

public abstract class FormBase : Form { /*...*/ } 

然後每隔形成使用的是可從這個基類繼承:

public class MyForm : FormBase { /*...*/ }  
+0

好的,我明白你的意思了。感謝您的幫助... –

+0

我需要在哪裏添加此代碼?我是否需要爲所有表單提供可執行文件? –

+0

好吧 - 沒有冒犯性 - 你應該閱讀一些關於面向對象編程的介紹。繼承對於OOP是非常基本的。 – TGlatzer

0

您可以添加一個事件處理程序到窗體中,並將​​需要在其中運行的任何代碼。

例如:

this.Load += new System.EventHandler(this.FormName_Load); 
0
public class frm_Base : Form 
{ 
    public void frm_Base() 
    { 
    this.Load += new System.EventHandler(this.frm_Base_Load); 
    } 
    public void frm_Base_Load(object sender, EventArgs e) 
    { 
    OnFormLoad(); 
    } 
    public virtual OnFormLoad() 
    { 
    MessageBox.Show("Hello World"); 
    } 
} 
public class frm_Derived : frm_Base 
{ 
    public override OnFormLoad() 
    { 
    base.OnFormLoad(); 
    MessageBox.Show("Another Hello From Derived"); 
    } 
} 

您現在可以繼承t他的所有其他形式的加載都會發生這種功能,並且通過使您的加載方法變爲虛擬來做其他事情。

+0

我是否需要將其添加到我的項目模塊中? –

相關問題