-
2017-12-11 10:39:27
新建委托类:
public class DataChangeEventArgs : EventArgs
{
// 定义委托
public delegate void DataChangeHandler(object sender, DataChangeEventArgs args);
public string devA { get; set; }
public string devB { get; set; }
public DataChangeEventArgs(string s1, string s2)
{
devA = s1;
devB = s2;
}
}
主窗口中定义
public void DataChangeDev(object sender, DataChangeEventArgs args) {
try
{
// 更新窗体控件
int a, b;
a = Convert.ToInt32(args.devA);
b = Convert.ToInt32(args.devB);
}
catch {
}
}
private void DevClick(object sender, RoutedEventArgs e)
{
DevSet devset = new DevSet();
devset.DataChange += new DataChangeHandler(DataChangeDev);
devset.textBox_Adevnum.Text = "0";
devset.textBox_Bdevnum.Text = "0";
devset.Top = this.Height / 3;
devset.Left = this.Height / 2;
devset.ShowDialog();
}
子窗口中
public partial class DevSet : Window
{
public event DataChangeHandler DataChange;// 声明事件
// 调用事件函数
public void OnDataChange(object sender, DataChangeEventArgs args)
{
if(DataChange != null)
{
DataChange(this, args);
}
}
public DevSet()
{
InitializeComponent();
}
private void button_set_Click(object sender, RoutedEventArgs e)
{
try
{
// this.Owner.
// 触发事件, 传递自定义参数
OnDataChange(this, new DataChangeEventArgs(textBox_Adevnum.Text, textBox_Bdevnum.Text));
this.Close();
}
catch {
}
}
}
更多相关内容 -
unity-委托事件的用法和差别
2018-11-03 17:34:51展示了委托和事件的用法,一节委托和事件的区别!!!!! -
C# 中如何利用lambda实现委托事件的挂接
2021-01-01 02:48:30委托定义如下: 代码如下:public class SocketSp{ public delegate void ReceiveCompleted(byte[] receiveBuffer, int receiveTotalLen,Exception ex); public ReceiveCompleted receiveCompleted;}挂接方定义如下... -
委托事件学习教案.pptx
2021-11-07 06:55:22委托事件学习教案.pptx -
委托事件:一个小型,快速JavaScript委托事件库
2021-02-21 09:52:48委托事件监听器 一个小型,快速委托JavaScript事件库。 用法 import { on , off , fire } from 'delegated-events' ; // Listen for browser-generated events. on ( 'click' , '.js-button' , function ( event ) {... -
委托事件PPT课件.pptx
2021-10-11 22:35:57委托事件PPT课件.pptx -
C#委托事件.zip
2019-07-05 08:58:40C#委托事件的学习文档加实例代码,绝对可正常运行,对入门阶段的人群有一定提升能力的作用! -
01: 委托 事件 入门.pdf
2019-08-21 16:15:36委托语法糖 (1).注意到上面有3个地方我们都觉得“奇怪”: a.调用委托对象dgObj(“JamesZou”); b.向委托注册方法 dgObj+=DaZhaoHu; c.将方法作为参数 DoTestDelegateFun(SayHi); 这些用法其实都是FW为我们提供的... -
unity委托事件机制
2018-03-16 15:07:39事件机制,彻底了解C# delegate,将delegate使用到项目中。 -
JAVA中的委托事件模型
2021-02-12 09:32:44Java自JDK1.1之后采用委托事件模型(delegation event model)。委托事件模型是进行图形用户界面设计的核心,在了解该模型之前,先介绍几个基本概念。1、 事件事件(event)是指一个状态的改变,或者一个活动的发生。...Java自JDK1.1之后采用委托事件模型(delegation event model)。委托事件模型是进行图形用户界面设计的核心,在了解该模型之前,先介绍几个基本概念。
1、 事件
事件(event)是指一个状态的改变,或者一个活动的发生。例如,用户点击窗口关闭按钮,发生窗口关闭事件;用户单击一个按钮,产生动作事件。
2、 事件源
发生事件的组件称为事件源。例如,用户单击窗口关闭按钮是在窗口上发生的事件,所以窗口为事件源;用户单击按钮产生的动作事件是在按钮上发生的,所以按钮为事件源。
3、 事件类和事件监听器接口
Java将事件封装成事件类,并为每一个事件类定义一个事件监听器接口(listener interface),约定事件处理方法,指定产生事件时执行的操作。
常用的事件类和对应的事件监听器接口如表1所示:
图片发自简书App
4、委托事件模型
当我们点击窗口或按钮等组件,想让程序执行希望的操作时,需要实现该事件对应的事件监听器接口,也就是告诉程序如果发生这类事件,该怎么处理。单这样还不行,不是谁发生该事件都进行处理,要指明哪个事件源发生该事件才进行处理。因此还需要在事件源上注册该监听器对象。这样事件源和事件监听器之间就建立了联系,当事件源发生该事件时,注册在事件源上的监听器对象就能监听到该事件,从而执行事件监听器的对应方法。这就是事件委托模型,如图1所示。
图片发自简书App
处理发生在某个图形用户界面组件上的XxxEvent事件的某种情况,其事件处理的通用编写流程:
(1) 编写一个实现XxxListener接口的事件监听器类。
(2) 在XxxListener类中的用于处理该事件情况的方法中,编写处理代码。
(3) 调用组件的addXxxListener方法,将类XxxListener创建的实例对象注册到事件源组件上。
举一个简单的例子,在Frame组件上添加一个Button按钮,点击Button按钮关闭窗口。
import java.awt.*;
import java.awt.event.*;
public class MyFrame implements ActionListener{
//实现ActionListener监听器接口
Frame f;
Button bt;
public MyFrame()
{
f=new Frame("My Frame"); //实例化窗口
f.setSize(400, 300); //设置窗口大小
f.setLocationRelativeTo(null);
//设置窗口居中显示
bt=new Button("OK"); //实例化Button按钮
bt.addActionListener(this);
// 注册监听器对象
f.add(bt); //将按钮bt添加到窗口f上
f.setVisible(true); //设置窗口可显示
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyFrame();
}
@Override
//实现监听器接口方法
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0); //结束程序
}
}
-
C#委托事件实例
2014-03-16 20:18:39委托事件,各种的C#的委托事件的常用实例,给初学者和进阶者都能带来不小的好处。 -
C#中的委托和事件(完整版)
2018-06-14 09:38:30详细讲述了C#中委托和事件的语法及其使用方法,用程序例子深入浅出的讲述了不同的使用方法和这些使用方法的优劣。 -
winform委托和事件经典例子
2018-02-09 18:01:19winform委托和事件经典例子,委托 和 事件 winform 传值 子传父 父传子 -
C#多线程 委托事件
2019-11-29 14:10:12线程查询数据上传服务器 ...首先创建一个 声明委托和事件线程 //声明委托与时间 public delegate void UpLoadHandler(DataSet dataset, string type); public event UpLoadHandler UpLoad; /// <summary...线程查询数据上传服务器
首先创建一个 声明委托和事件 线程
//指示是否对错误线程的调用,即是否允许在创建UI的线程之外访问线程 CheckForIllegalCrossThreadCalls = false; //声明委托与时间 public delegate void UpLoadHandler(DataSet dataset, string type); public event UpLoadHandler UpLoad; /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_CloseThread_Click(object sender, EventArgs e) { //调用test实例的MyThread方法 Thread thread = new Thread(new ThreadStart(doSomething1)); //启动线程 thread.Start(); } /// <summary> /// 线程方法 //查询数据库,找到未上传的数据,可在多线程中启动 /// </summary> private void doSomething1() { //DataProcessing dp = new DataProcessing(); int i = 0; while (true) { ///发卡记录上传接口 DataSet ds = DbHelperSQL.Query("SELECT * from Base_Card where UpLoadStatus=0"); if (ds.Tables[0].Rows.Count != 0) { //如果找到了,开启执行事件 //这里的参数可以是你数据的实体类 this.UpLoad(ds ,""); } //线程 界面传值 this.Invoke(new Action(() => { lbl_progress.Text = i++.ToString(); })); //线程休眠500毫 Thread.Sleep(1000); } } /// <summary> /// 加载。。。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Frm_Main_Load(object sender, EventArgs e) { //绑定事件 DataProcessing pub = new DataProcessing(this); UpLoad += pub.upload; }
事件处理数据上传类
/// <summary> /// 数据处理 /// </summary> class DataProcessing { public DataProcessing(Frm_Main test1) { } /// <summary> /// 发卡记录上传接口(vn_base_card) /// </summary> public void upload(DataSet ds, string type) { //这里上传数据 System.Windows.Forms.MessageBox.Show("上传数据啦"); } } /// <summary> /// 关闭窗体终止线程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e) { Environment.Exit(0); }
-
C# 委托事件传递参数
2021-01-19 14:30:57关于委托传值的总结,每天总结一点点,每天进步一点点 这里尝试了串口通讯委托,虽然本来就有,... //定义一个委托事件 public event serialPortHandler GetData; private void serialPortListen() { while (true)关于委托传值的总结,每天总结一点点,每天进步一点点
这里尝试了串口通讯委托,虽然本来就有,但是自己练习一下还是好的。//定义一个委托 public delegate void serialPortHandler(string msg); //定义一个委托事件 public event serialPortHandler GetData;
private void serialPortListen() { while (true) { Thread.Sleep(10); string msg = serialPort.ReadExisting(); if (msg!= string.Empty) { GetData(msg); serialPort.DiscardOutBuffer(); } if (!isEnable) break; } }
使用
serialPortHelper = new Communication.serialPortHelper("COM1"); //注册事件 serialPortHelper.GetData += SerialPortHelper_GetData; private void SerialPortHelper_GetData(string msg) { string info = string.Format("[{0}]Recevied:{1}", DateTime.Now.ToString("HH:mm:ss:fff"), msg); if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { updateUI(info); })); } else { listBox1.Items.Add(info); } } void updateUI(string msg) { listBox1.Items.Add(msg); }
总的来说,需要在类A里面定义一个委托和事件,
在类B里面通过+=事件,接受消息。
涉及到跨线程更新UI的时候,需要使用委托去更新。 -
C#通过委托调用Button单击事件的方法
2021-01-01 02:12:12这里介绍通过委托取消Button事件switch-case的方法。需要注意的是,事先要按顺序在各个Button的Tag属性中设置0、1、2、3……等序号,其作用请详看代码。 /*定义委托*/ public delegate 类型或viod MethodDelegate... -
C#--委托和事件
2018-05-09 11:20:39学习C#毕竟之路,对事件编程,入门级介绍,全面而且细致 -
C#乘法计算器(委托事件的实例)
2022-03-24 15:13:25C#乘法计算器(委托事件的实例) -
c# winform 窗体间委托事件传值
2015-07-24 11:00:28winform 窗体间委托事件传值 -
C# Winform 使用委托时委托事件一直为null的问题
2018-06-20 17:34:27经过思考发现,原来出错的原因是第四步:将要实现的方法绑定到委托事件。我们可以看到这里监听的窗体是新new出来的一个窗体。 public Form_FlashStart () { InitializeComponent(); Form_Settings frm_... -
Unity委托事件delegate、匿名方法、Lambda基础语法
2022-04-24 18:39:39我们可以这样理解委托:委托可以把“方法”当做“参数”来传递。往下再看会儿就知道了。 常见的类型有string,int,float,这些都是类型,那“方法”就是委托类型。 委托的语法: using System.Collections; ... -
c# WinForm通过委托事件实现winform窗体之间的互相刷新
2020-12-02 19:43:26一般利用委托实现 如下示例: 新建winform窗体Form1和Form2; 接下来要通过点击Form2的按钮,实现Form1界面的同步刷新。 先展示一下最终效果: 1.Form1界面如下: 2.点击按钮弹出Form2,界面如下: 3.点击Form2按钮... -
JavaScript动态添加事件之事件委托
2020-11-23 08:17:26先给大家讲下什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。 也就是:... -
C# 委托事件简单的使用例子
2012-06-04 12:58:43这是C# 委托与事件简单的使用例子。 只是为了初学者更好的接受委托与事件使用方法而已。 程序有两个窗体,一个是主窗体,一个是副窗体。 打开主窗体,在主窗体中点按钮后,打开副窗体,在副窗体中,可以调整主窗体... -
委托事件,事件冒泡,事件捕获,this,target总结
2017-06-02 00:19:441,委托事件:依托于事件冒泡原理让自己的父级或祖籍(甚至根元素)来帮自己做某些事情。 优点: A:提高运行效率(尤其对于需要循环操作的列表); B:动态添加后的元素,仍然可以有这些事件(对比与给自己添加... -
c#委托事件异步例子
2013-06-26 17:10:17c#委托事件异步例子,委托,异步委托,事件 -
C# 中委托事件的理解实例
2014-12-10 22:37:01C# 中委托事件的理解实例,在实例中有线程的实现,并在线程中修改主进程中的控件信息。textbox的值 -
dom-delegator, 使用委托事件装饰元素.zip
2019-09-18 07:32:54dom-delegator, 使用委托事件装饰元素 dom代理使用委托事件装饰元素dom-delegator 允许你将 EventHandler 附加到dom元素。当发生正确类型的事件时,dom-delegator 将调用你的EventHandler这允许你从事件编写器分离... -
c#委托事件的实现
2016-01-09 14:10:11基于c#程序对c语言中的委托事件进行详细的分析与讲解