C# 两个类间传递消息

  • C# 两个类间传递消息已关闭评论
  • 156 次浏览
  • A+
所属分类:.NET技术
摘要

运行环境:Window10,.Net7.0; 编者:乌龙哈里 2023-01-13经常碰到两个控件需要相互传递消息,这时候需要用到事件。比如现有两个类如下:

运行环境:Window10,.Net7.0; 编者:乌龙哈里 2023-01-13


经常碰到两个控件需要相互传递消息,这时候需要用到事件。比如现有两个类如下:

class AA {     private string Text = "AA";      public void SetText(string s)     {         Text = s;     }     public void Show()     {         Console.WriteLine(Text);     } }  class BB {     private string Text = "BB";     public void OnClick()     {      } }

我们需要 BB.OnClick() 后把 AA 的 Text 字段内容变成 BB.Text 的内容。这时候需要事件。事件按我的理解就是把 AA 的一个方法弄到 BB 内执行。在本文中就是 BB 也能执行 AA.SetText(string s) 这个方法。
在BB类内改造步骤:
1、根据 AA类的方法 void SetText(string s) 在 BB类 中声明一个代理 public delegate void SetValue(string s);
2、再把代理声明成事件 public event SetValue SetValueEvent;
3、最后,在 BB 类的 OnClick() 方法中运行事件。
改完的 BB 类如下:

class BB {     private string Text = "BB";      public delegate void SetValue(string s);     public event SetValue? SetValueEvent;      public void OnClick()     {         if (SetValueEvent != null)         {             SetValueEvent(Text);         }     } }

 

整体运行如下:

var aa = new AA(); var bb = new BB();  aa.Show();//=>输出:AA //把 BB 的事件绑定到 AA 的 SetText 方法 bb.SetValueEvent += aa.SetText;  //运行 BB 调用事件的方法 OnClick() bb.OnClick();  aa.Show();//=>输出:BB。aa.Text 的内容已经改变成 BB 了