首页新闻找找看学习计划

Winform的+=

0
[已解决问题] 解决于 2018-10-25 18:16


这是什么操作,如果我要写类似于这种+=的事件该怎么写,这种事件被称之为什么事件,有什么作用,在什么时候会触发

kuangx的主页 kuangx | 菜鸟二级 | 园豆:328
提问于:2018-10-25 17:58
< >
分享
最佳答案
0

C#事件是一种特殊的委托,建议你先学习一下委托,+=简单说就是订阅方法.

奖励园豆:5
屋檐不懂雨 | 初学一级 |园豆:92 | 2018-10-25 18:04

什么是订阅方法,委托我知道,但是我没有写过委托

kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:05

@kuangx: 你要多写,多用委托.多个方法是可以相加的,连续调用.

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-25 18:07

@屋檐不懂雨: 我现在想知道的是,我怎么写出类似于他那种+=的代码,我想知道详细步骤

kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:08

@kuangx: 

1.定义一个事件变量

2.在另一个地方为这个变量+=一个方法名

3.使用

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-25 18:10
A类:
//定义事件的变量
public event Action<string> SendMsg;

B类:
//订阅方法
A.SendMsg+=showmsg

public string showmsg(string str)
{
    messagebox.show(str);
}

使用:
SendMsg("hello");

 

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-25 18:14

@屋檐不懂雨: 谢谢

kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:16

@kuangx: 

例子有点问题,第一句这样:

public static event Action<string> SendMsg;

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-25 18:17

@屋檐不懂雨: 我看懂了,上面代码不是还有一个new,是+=完了之后,在写的吗

kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:21

@kuangx: 我没有写new呀

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-25 18:23

@屋檐不懂雨: 上面图片里面的代码有new

kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:30

@kuangx:new是因为要类型一致

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-25 18:32

@屋檐不懂雨: 长知识了

kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:37

@kuangx: 

订阅方法:

原始写法(C#1.0语法)

A.SendMsg+=new Action<string>(showmsg);

这种写法比较繁琐于是在C#2.0中得到了简化

2.0语法:

A.SendMsg+=showmsg;

可以直接+=一个方法

屋檐不懂雨 | 园豆:92 (初学一级) | 2018-10-26 11:00
其他回答(3)
0

你直接去查下事务就行了!

feiyangxu | 园豆:186 (初学一级) | 2018-10-25 18:02

百度Winfrom的事务?

支持(0) 反对(0) kuangx | 园豆:328 (菜鸟二级) | 2018-10-25 18:05

@kuangx: https://www.cnblogs.com/gq0324/p/8177799.html 你去看看,事件和委托!

支持(0) 反对(0) feiyangxu | 园豆:186 (初学一级) | 2018-10-25 18:14
0

你每加一个方法,当触发这个事件的时候就会执行他

猝不及防 | 园豆:1714 (小虾三级) | 2018-10-25 18:10
0

C# 是特有的事件和委托, 你先看明白事件和委托了, 这些就都明白了.

Pete-Jones | 园豆:111 (初学一级) | 2018-10-26 14:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册