触发事件A的时候自动引起事件B的改变
有两个打开的窗体Form1,Form2
都有一个文本框控件TextBox
Form1的文本框输入内容时,Form2的文本框内容自动跟随Form1的文本框内容而改变
【自动投影】
比如交通事故肇事者A驾驶车辆闯红灯导致行人B【被害者】重伤。对于程序的事件来说。
首先A和B要进行事件绑定:产生联系【受害者B在肇事者A的行车轨迹中】
肇事者A 闯红灯这个事件触发,导致 被害者B重伤。
SomeEvent -= MethodProcess;
SomeEvent += MethodProcess;
Form2的RefreshTextBox方法如下:
- ///
- /// 刷新文本框事件 ,必须为public,不然无法访问
- ///
- ///
- public void RefreshTextBox(string message)
- {
- textBox2.Text = message;
- }
- ///
- /// 文本框的改变事件 Form1的文本框的文本改变 自动引起Form2的文本框的文本改变
- /// Form2的文本是Form1的文本的影子
- ///
- event Action<string> ShadowEvent;
- Form2 form2 = null;
- private void button1_Click(object sender, EventArgs e)
- {
- if (form2 == null || form2.IsDisposed)
- {
- form2 = new Form2();
- ShadowEvent -= form2.RefreshTextBox;
- ShadowEvent += form2.RefreshTextBox;
- form2.Show();
- }
- else
- {
- form2.Activate();
- }
- }
当文本框的值变化时导致Form2的文本框也自动跟着变化,即调用事件
- private void textBox1_TextChanged(object sender, EventArgs e)
- {
- ShadowEvent?.Invoke(textBox1.Text);
- }
- 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 EventAndTrigDemo
- {
- public partial class Form1 : Form
- {
- ///
- /// 文本框的改变事件 Form1的文本框的文本改变 自动引起Form2的文本框的文本改变
- /// Form2的文本是Form1的文本的影子
- ///
- event Action<string> ShadowEvent;
- public Form1()
- {
- InitializeComponent();
- }
-
- Form2 form2 = null;
- private void button1_Click(object sender, EventArgs e)
- {
- if (form2 == null || form2.IsDisposed)
- {
- form2 = new Form2();
- ShadowEvent -= form2.RefreshTextBox;
- ShadowEvent += form2.RefreshTextBox;
- form2.Show();
- }
- else
- {
- form2.Activate();
- }
- }
-
- private void textBox1_TextChanged(object sender, EventArgs e)
- {
- ShadowEvent?.Invoke(textBox1.Text);
- }
- }
- }
- 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 EventAndTrigDemo
- {
- public partial class Form2 : Form
- {
- public Form2()
- {
- InitializeComponent();
- }
-
- ///
- /// 刷新文本框事件 ,必须为public,不然无法访问
- ///
- ///
- public void RefreshTextBox(string message)
- {
- textBox2.Text = message;
- }
- }
- }