上一篇
没有讲明白
两个窗体,mainFrm主窗体
mxFrm明细窗体
当有一个需求是这个的(“主窗体打开明细窗体,点击主窗体的按钮,改变明细窗体的东西”)
界面是这样的,后面有源码
public partial class mainFrm : Form
{
//声明事件
public static event Action addTxtEvent;
public mainFrm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
mxFrm frm = new mxFrm();
frm.Show();
}
private void btnMsg_Click(object sender, EventArgs e)
{
addTxtEvent();
}
}
public partial class mxFrm : Form
{
int i;
public mxFrm()
{
InitializeComponent();
//注册事件
mainFrm.addTxtEvent += Form1_addTxtEvent;
}
private void Form1_addTxtEvent()
{
AddTxt();
}
public void AddTxt()
{
i++;
listBox1.Items.Add($"这是第{i}句话!\r\n");
}
}
点击主窗体,然后明细窗体的listBox就会出现文本,从而实现夸窗体事件
这个实例还可以反转一下,改一下需求
主窗体打开明细窗体,点击明细窗体里的按钮,改变主窗体的东西
那么要怎么实现呢
首先页面布局一样,只是代码要改一下
public partial class mainFrm : Form
{
int i;
public mainFrm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
mxFrm frm = new mxFrm();
frm.Show();
frm.addTxtEvent += Frm_addTxtEvent;
}
private void Frm_addTxtEvent()
{
AddTxt();
}
public void AddTxt()
{
i++;
listBox1.Items.Add($"这是第{i}句话!\r\n") ;
}
}
public partial class mxFrm : Form
{
public event Action addTxtEvent;
public mxFrm()
{
InitializeComponent();
}
private void btnMsg_Click(object sender, EventArgs e)
{
addTxtEvent();
}
}
通过这个小Demo有没有总结什么主要
事件声明和使用是在一边的(要操作的一边)
方法和注册是在另一边(要被改变的一边)
有什么补充的可以留言,有些坑可能我还没看到