[英]Calling method in other class (Windows Form) in C#
我現在有兩個表單“Form1”和“Form2”我想從“Form2”調用“Form1”中存在的方法“change_lbl()”但是當我在“Form2”中調用該方法時它沒有實現並且無法執行
代碼 Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void change_lbl()
{
lbl_form1.Text = "Its Done !";
}
private void btn_gofrm2_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
}
}
代碼 Form2:
public partial class Form2 : Form
{
Form1 frm1 = new Form1();
public Form2()
{
InitializeComponent();
}
private void btn_form2_Click(object sender, EventArgs e)
{
frm1.change_lbl();
this.Close();
}
}
代碼正確,方法調用正確! 您正在創建和使用Form1
的新實例而不顯示它,但看起來您希望看到 Application 正在使用且當前處於打開Form
默認實例中的更改。 擁有Form1
類的打開實例:
Form1 myForm1=(Form1)Application.OpenForms["Form1"];
我建議你看看這個項目。 這可能會解決您的問題。 基本上,當您調用 Form2 並單擊一個按鈕(我的意思是一個 Form2 按鈕)時,Form1 必須“捕獲”該事件,即像 Form2buttonClicked 這樣的事件。 看看這篇文章了解更多。 http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms
這可能有點無關緊要,但這也可能對您有所幫助http://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms
在Form2
創建一個EventHander
並在Form1
訂閱該事件。 工作沒問題
public partial class Form2 : Form
{
public event EventHandler ButtonClicked;
public Form2()
{
InitializeComponent();
}
private void btn_form2_Click(object sender, EventArgs e)
{
if(ButtonClicked != null);
ButtonClicked(sender, new EventArgs());
this.Close();
}
}
現在在Form1
訂閱事件並調用change_lbl()
private void btn_gofrm2_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ButtonClicked += (se,ev) => change_lbl();
frm2.Show();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.