C#自定义事件传值(c#自定义事件监控变量变化)

C#自定义事件传值(c#自定义事件监控变量变化)

编码文章call10242025-08-18 3:58:342A+A-

对于一般的系统事件,是有两个参数的,一个是sender,一个是EventArgs,对于sender,个事件的触发者,一般指向的是一个控件,但是对于EventArgs,一般常用来传递鼠标位置等信息,下面就自定义事件传值就是通过EventArgs来实现。

基础篇

通过EventArgs来实现传值,我们首先需要创建一个类,继承EventArgs,我们可以将需要传递的数据,直接在类里面定义成属性,这里以传递一个布尔(没有再最终的代码内使用)、一个浮点数,一个字符串为例,代码如下所示:


using System;

namespace myEventPrj

{

/// <summary>

/// 自定义事件

/// </summary>

public class myEventArgs:EventArgs

{

public bool BoolValue { get; set; }

public float FloatValue { get; set; }

public string StrValue { get; set; }

}

}

然后我们创建一个类,类里面创建一个事件,并激发事件,这里传递的值为True和12.34,str传输时间,代码如下:

using System;

namespace myEventPrj

{

internal class MyTestClass

{

public void AckEvent()

{

//触发事件

myEvent?.Invoke(this, new myEventArgs()

{

BoolValue = true,

FloatValue = 12.34f,

StrValue = DateTime.Now.ToString()

});

}

//创建事件

public event EventHandler myEvent;

}

}

我们在主窗体中,实例化类,并进行事件绑定,看看能不能获取到传递的数据,代码如下:


using System;

using System.Windows.Forms;

namespace myEventPrj

{

public partial class Form1 : Form

{

MyTestClass T;

public Form1()

{

InitializeComponent();

T = new MyTestClass();

T.myEvent += T_myEvent;

}

private void T_myEvent(object sender, EventArgs e)

{

myEventArgs arges = e as myEventArgs;

richTextBox1.AppendText(arges.StrValue + " " + arges.FloatValue.ToString() + "\r\n");

}

private void button1_Click(object sender, EventArgs e)

{

T.AckEvent();

}

}

}

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4