2014-03-13 52 views
2

調用一個函數,這可能是最常見的問題之一在那裏,有Form 1和Form,我怎麼能調用一個函數(在Form),如:MySQLConnect從FORM2。我嘗試了幾個選項,但我無法讓它工作,在第二次嘗試中,我嘗試從按鈕調用函數,但沒有運氣。如何從另一種形式

Form1.cs中(我第一次嘗試:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     Form2 form2 = new Form2(this); 
    } 

    public void MySQLConnect(object sender, EventArgs e) 
    { 
     // Starting a MySQL connection 
    } 
} 

Form2.cs(我第一次嘗試:

public partial class Form2 : Form 
{ 
    Form1 mainForm; 

    public Form2(Form1 mainForm) 
    { 
     InitializeComponent(); 

     this.mainForm = mainForm; 
     // call function on form1 MySQLConnect() 
     mainForm.MySQLConnect(); 
    } 
} 

Form1.cs中(我的第二嘗試:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public void MySQLConnect(object sender, EventArgs e) 
    { 
     // Starting a MySQL connection 
    } 
} 

Form2.cs(我的第二次嘗試:

public partial class Form2 : Form 
{ 


    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void btnMySQLConnect(object sender, EventArgs e) 
    { 

     Form1 myForm1 = new Form1(); 
     myForm1.MySQLConnect(sender, e); 
    } 

} 

請幫幫忙!

+0

您是否嘗試「顯示」您的第二個表單?因爲我非常確定你的第一次嘗試應該是有效的。 –

+0

你有什麼錯誤?順便說一句,像MySQLConnect這樣的函數應該在實用程序類中,而不是表單。 – BradleyDotNET

+0

嘗試從MySQLConnect中刪除參數。即私人無效MySQLConnect(){...}。 – failedprogramming

回答

3

如果您傳遞MySqlConnect預期的參數,則您的第一個示例工作正常。

public partial class Form2 : Form 
{ 
    Form1 mainForm; 

    public Form2(Form1 mainForm) 
    { 
     InitializeComponent(); 

     this.mainForm = mainForm; 
     mainForm.MySQLConnect(this, new EventArgs()); 
    } 
} 

但是,我無法想象名爲MySqlConnect的函數可以通過傳遞的參數做什麼。
因此,最好在方法定義中刪除它們,並且在調用它時不要傳遞任何東西。

我同意上面的意見。爲什麼要在Form實例中隱藏這樣重要的(通常是必需的功能)?您必須在需要連接到數據庫的任何地方傳遞此表單實例。準備一些靜態服務類(在數據庫訪問層中)可以更好地完成這項工作

+0

謝謝你的作品! – AJ152

0
mainForm.MySQLConnect(); 
public void MySQLConnect(object sender, EventArgs e) 

任何想法?你只是省略了參數。