zoukankan
html css js c++ java
Framework1.1的事件处理
事件一般写的不是很多,多用在自定义控件等地方。又很容易遗忘,一般分以下几个步骤。 定义事件的标准模式如下(参考了.net框架设计一书)
1.构造一个静态只读对象标识事件
protected
static
readonly
object
clickEvent;
2.为事件定义一个继承自EvevtArgs的类型,用于保持传递给事件接受者的附加信息。如果没什么特别的信息的话,那我们用框架里的System.EventArgs类型就可以了。
public
class
CustomEventArgs:EventArgs
{}
3.定义一个委托类型,指定事件触发时被调用的方法原形
public
delegate
void
Gate_Click(
string
clickName);
4定义一个受保护的实例字段,可以引用一个集合来管理一组事件事件/委托对。一般可以使用System.ComponentMoedl.EventHandlerList类型。所以使用Control的Events类就可以了。
5为事件定义访问器的方法用于集合上添加/移除委托实例
public
event
Gate_Click ClickEvent
{
add
{
Events.AddHandler(clickEvent,value);
}
remove
{
Events.RemoveHandler(clickEvent,value);
}
}
6定义一个事件激发时所调用的方法,再使用委托调用所关联的方法。
protected
void
FireEvent(
string
str)
{
Gate_Click handler
=
(Gate_Click)Events[clickEvent];
if
(handler
!=
null
)
handler(str);
}
7触发事件
private
void
invokeEvent(
object
sender,EventArgs e)
{
FireEvent(
"
str
"
);
}
好了。至此一个事件就已经完成了。但control.Events使用线性搜索所以量大时效率比较低,而且不保证线性安全。如果有需要可以自行编写Events类。
查看全文
相关阅读:
[leetcode] 48. 旋转图像(Java)(模拟)
[leetcode] 47. 全排列 II
[leetcode] 46. 全排列(Java)
[leetcode] 45. 跳跃游戏 II(Java)(动态规划)
[leetcode] 875. 爱吃香蕉的珂珂(周赛)
[leetcode] 874. 行走机器人模拟(周赛)
《数据结构与算法分析:C语言描述》复习——第八章“并查集”——并查集
《数据结构与算法分析:C语言描述》复习——第六章“排序”——基数排序
《数据结构与算法分析:C语言描述》复习——第六章“排序”——桶排序
《数据结构与算法分析:C语言描述》复习——第六章“排序”——快速排序
原文地址:https://www.cnblogs.com/ziling8163/p/856682.html
最新文章
P1726-上白泽慧音
ACM模板——差分约束
变态跳台阶
斐波那契数列(python)
LeetCode--015--三数之和(python)
LeetCode--009--回文数(python)
LeetCode--008--字符串转换整数 (atoi)(python)
LeetCode--006--Z 字形变换(python)
LeetCode--152--乘积最大子序列(python)
LeetCode--617--合并二叉树(python)
热门文章
LeetCode--148--排序链表(python)
LeetCode--146--LRU缓存机制(python)
[leetcode] 57. 插入区间
[leetcode] 56. 合并区间
[leetcode] 54. 螺旋矩阵
[leetcode] 53. 最大子序和
[leetcode] 52. N皇后 II
[leetcode] 51. N皇后
[leetcode] 50. Pow(x, n)
[leetcode] 49. 字母异位词分组
Copyright © 2011-2022 走看看