C# form2 呼叫 form1 函數 ~ 建構子/委派 [如何在 WinForm(表單) 之間傳遞資料]
C# form2 呼叫 form1 函數 ~ 建構子/委派 [如何在 WinForm(表單) 之間傳遞資料]
資料來源: https://medium.com/delightlearner/c-development-%E5%A6%82%E4%BD%95%E5%9C%A8-form-%E4%B9%8B%E9%96%93%E5%82%B3%E9%81%9E%E8%B3%87%E6%96%99-3aac6a6ba80b
Method 1 : 使用建構子 ( Constructors ) 傳遞
namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2(string sMsg) // Form2建構子 { InitializeComponent(); label1.Text = sMsg; //將label1.text設定為從From1傳過來的資料 } } } namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2("Data from Form1"); frm2.Show(); //顯示Form2 } } }
Method 2: 使用事件( Event ) 傳遞
namespace WindowsFormsApplication1 { public partial class Form2 : Form { public delegate void form2EventHandler(string sMsg); //宣告委派 public form2EventHandler eventForm2trigger; //傳遞資料event public Form2() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { eventForm2trigger("Form2 button pushed!"); //傳遞資料至Form1 } } } namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.eventForm2trigger = new Form2.form2EventHandler(triggered); // 宣告承接event委派事件 frm2.Show(); //顯示Form2 } public void triggered(string sMsg) //承接委派的function { MessageBox.Show(sMsg); //將傳遞過來的資料用MessageBox顯示 } } } //當按下 Form1 上的 button1 後會跳出 Form2,接著按下 Form2 上的 button2 則會觸發 eventForm2trigger 事件並執行 triggered 這個 function ,將從 Form2 傳至 Form1 的資料用 MessageBox 顯示出來。
2 thoughts on “C# form2 呼叫 form1 函數 ~ 建構子/委派 [如何在 WinForm(表單) 之間傳遞資料]”
C#中的DELEGATE(委託)和EVENT(事件)
C# form2 呼叫 form1 函數 ~ 建構子/委派 [如何在 WinForm(表單) 之間傳遞資料]
子視窗(子物件) 呼叫 主視窗(主物件) 函數 工作/做事/ 傳遞資料
C/C++ callback function /函數指標 類似