当前位置: 代码网 > it编程>编程语言>Asp.net > 浅析C#如何在自定义事件里传递数据

浅析C#如何在自定义事件里传递数据

2024年12月26日 Asp.net 我要评论
通过自定义事件来传值。此种方法适合于写驱动程序。进行数据采集。对于一般的系统事件,是有两个参数的,一个是sender,一个是eventargs,对于sender,个事件的触发者,一般指向的是一个控件,

通过自定义事件来传值。此种方法适合于写驱动程序。进行数据采集。

对于一般的系统事件,是有两个参数的,一个是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
{
    //https://mp.weixin.qq.com/s?__biz=mzi4otqymzy3mq==&mid=2247493894&idx=1&sn=131e50c046608bf17c09d8118739a2fe&chksm=ed20d4ff08f84521b62e39da3b3ae5533e0fb9ab40852533188fb103cb578bab7010e391b356&mpshare=1&scene=1&srcid=1223cf4uqddpgfdmwgabqgqk&sharer_shareinfo=eba01a08e8f309806a7eb3645b15eb4c&sharer_shareinfo_first=eba01a08e8f309806a7eb3645b15eb4c&exportkey=n_chqiahiqgpszxzb%2bawifi0gzeaaefxkfagie97dbbaeaaaaaaeveny%2bj2reaaaaopnltblcz9gknyk89dvj0zitidn8l4upuz%2fzqp5ccykdshp63tukde42ttj%2fabovwfthqll95vdd%2fbvbwrqwyvm4un5z%2fuvqb4ns7ygihywmp0wablonyyryeitvyeomxf3f3yh2rczkat4sbp8hspeyaro8cfkcx6uektz6vvutaqysp4z9kpxtkscga6s5t9ls50zksqf5mqu2%2f%2fckimghcetsvifpwkxy1ry%2fk8n03%2bqxb6itdngjmenqtzhyydwacbpkddg6jmizpsnzciup%2fhdyaeoapsumc0jiljfs3bth3eiaiduee%2f31r71eodaxkkwrblhvtiqowfwz0ildbcsar2vxl&acctmode=0&pass_ticket=cspjfkwd1sodawac3aa9e25thieyymcw8oim1uwpsnp%2b06jug23ysoslkrq1wjgh&wx_header=0#rd
    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();
        }    
    }
}

运行结果如下所示:

参考文章:

c#如何在自定义事件里传递自定义数据

到此这篇关于浅析c#如何在自定义事件里传递数据的文章就介绍到这了,更多相关c#自定义事件传递数据内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com