C# form2 呼叫 form1 函數 ~ 建構子/委派 [如何在 WinForm(表單) 之間傳遞資料]

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(表單) 之間傳遞資料]

  1. C#中的DELEGATE(委託)和EVENT(事件)

    C# form2 呼叫 form1 函數 ~ 建構子/委派 [如何在 WinForm(表單) 之間傳遞資料]

    子視窗(子物件) 呼叫 主視窗(主物件) 函數 工作/做事/ 傳遞資料

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *