全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 测量仪表 >

LabVIEW与C# 注册事件相关方法

时间:2023-10-09 17:48

人气:

作者:admin

标签: 事件  注册    相关  labview 

导读:利用C#编写事件相关的类库,在WinForm和LabVIEW中进行测试,并描述相关程序的调用方法。...

2 利用WinForm调用类库

在解决方案下面,新建WinForm工程

wKgaomUeCSSAPbSkAAE7dGUmgFc745.png

在引用上面,右键选择添加引用

wKgZomUeCSOAT2YPAACEO_I2p6Y872.png

点击浏览,选择之前生成的dll,

wKgZomUeCSOAKXH9AAAiqs_-0uI086.png

点击确定按钮,完成引用的添加。

wKgaomUeCSOARrAxAAAikchJHtg001.png

在调用库时,在开头位置添加命名空间的引用,此处为using EventTesting;

在界面中,进行两个功能的测试。1 )在界面内输入字符串,点击按钮,触发事件2)实现一个简单函数Add,在执行时,触发事件,代码如下:

wKgZomUeCSSAbeqNAAAyhyDxTQc224.png

using System;
using System.Windows.Forms;
using EventTesting;//导入的类库

namespace WindowsFormsApp1
{
 public partial class Form1 : Form
 {
 private EventPublisher publisher; // 声明 publisher 作为类级别的字段
 public Form1()
 {
 InitializeComponent();
 publisher = new EventPublisher(); // 在初始化时创建 EventPublisher 实例
 publisher.MyEvent += HandleEvent;
 
 }
 
 private static void HandleEvent(object sender, MyEventArgs e)
 {
 MessageBox.Show($"执行结果: {e.Message}");
 }

 private void addBtn_Click(object sender, EventArgs e)
 {
 //将a、b的值传入Add函数,并触发 HandleEvent事件
 textBox1.Text = publisher.Add((int)a.Value, (int)b.Value).ToString();
 }

 private void RaiseEvent_Click(object sender, EventArgs e)
 {
 publisher.RaiseEvent(SetStr.Text);
 }
 }
}

执行情况:

1)填写输入,点击按钮,触发了事件,弹出提示框。

wKgZomUeCSSAZza2AAB1zxdUsk0937.png

2)输入a=1,b=2,事件触发,得到结果。

wKgZomUeCSSAZza2AAB1zxdUsk0937.png

wKgaomUeCSSAYa99AAAuIfjDT3I282.png

3 在LabVIEW中,调用事件

1)选择构造器节点

wKgaomUeCSSAeY7PAAFetJA2gfM616.png

2)浏览选择生成的dll,选择事件类。

wKgaomUeCSSAXHdkAAB0Z4kMWGQ068.png

3)选择事件回调,建立一个回调函数,函数里面是将触发事件的字符串显示到界面的控件中。

wKgZomUeCSSALjUmAABlPOE38xs584.png

wKgZomUeCSSASJ-JAADu7Kr7jHc348.png

4)同样是做两组测试,一个直接触发,另一个通过Add函数间接触发。前面板如下:

wKgaomUeCSSAGOzIAADbTiqSPTc526.png

触发程序:

wKgaomUeCSSABpMcAADbTiqSPTc048.png

Add程序:

wKgZomUeCSSAMprHAADqsR5CBVY244.png

5)执行测试。触发的测试如下:

执行Add的测试如下:

wKgZomUeCSSAPW6YAACtNvZI6hQ535.png

利用C#编写事件相关的类库,在WinForm和LabVIEW中进行测试,并描述相关程序的调用方法。

1 编写事件的相关类库

新建项目,先利用C#编写.NET Framework类库。

wKgZomUeCNKAdsrjAAE6qtkQaXE764.png

这个类库主要用于展示事件的定义和触发。EventPublisher类包含了一个自定义事件MyEvent,并且在Add方法中演示了如何触发事件。其他应用程序可以订阅这个事件,并在事件触发时执行相应的操作,以便处理事件相关的信息。

using System;

namespace EventTesting
{
 // 1. 定义事件参数类
 public class MyEventArgs : EventArgs
 {
 public string Message { get; }

 public MyEventArgs(string message)
 {
 Message = message;
 }
 }

 // 2. 定义包含事件的类
 public class EventPublisher
 {
 // 定义事件,使用 EventHandler 委托,事件参数类型是 MyEventArgs
 public event EventHandler< MyEventArgs > MyEvent;

 // 触发事件的方法
 public void RaiseEvent(string message)
 {
 // 创建事件参数对象
 MyEventArgs args = new MyEventArgs(message);
 
 // 触发事件
 MyEvent?.Invoke(this, args);
 }

 public int Add(int a, int b)
 {
 //在调用此函数时,触发事假
 int sum = a + b;
 RaiseEvent(sum.ToString());
 return sum;
 }
 }

}

选择“生成”或“重新生成”,生成dll文件。

wKgZomUeCP2AEpfOAABpcdKZCkI987.pngwKgaomUeCP2AY6D2AACHfqi8JjQ659.png

审核编辑 黄宇

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信