設計頁面 如下? 其中Form2為啟動項? 當點擊訂閱消息的時候? 會創建Form1頁面? ? 當 Form1頁面的點擊發送的時候? 自動將發送的消息同步到label1中
Form2的代碼如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace _06._27跨頁面調用
{public partial class Form2 : Form{public Form2(){InitializeComponent();btnOpenForm1.Click += BtnOpenForm1_Click;}private void BtnOpenForm1_Click(object sender, EventArgs e){Form1 form1 = new Form1();// 訂閱事件(使用Lambda表達式)form1.MessageSent += (eventsender, msg) =>{lblStatus.Text = $"收到消息: {msg}";// 可以在這里執行其他UI更新};form1.Show();// 或者顯示為對話框// form1.ShowDialog();}}
}
Form1的代碼如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace _06._27跨頁面調用
{public partial class Form1 : Form{public Form1(){InitializeComponent();btnSend.Click +=btnSend_Click;//btnSend.Click +=new EventHandler(btnSend_Click);}// 1. 聲明事件(使用EventHandler委托)public event EventHandler<string> MessageSent;// 2. 觸發事件的方法protected virtual void OnMessageSent(string message){MessageSent?.Invoke(this, message);}// 3. 實際觸發點private void btnSend_Click(object sender, EventArgs e){OnMessageSent(txtMessage.Text);}}
}