C#中 Winform如何实现跨页面调用
设计页面 如下 其中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);}}
}