C# 中所有触发事件的说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中所有触发事件的说明相关的知识,希望对你有一定的参考价值。

格式: 控件名_事件名(object sender,EventArgs e)
第一个参数object sender 提供事件的来源,第二个参数EventArgs e提供对象引用以及事件的信息
文档说明:
事件名 触发条件
Activate 当窗口激活时触发
ButtonClick 当工具条按钮被单击时触发
ButtonDropDown 当工具条控件的ButtonDropDown样式被单击时触发
CheckStateChanged 当控件的CheckState属性修改时触发
CheckedChanged 当控件的Checked属性修改时触发
Click 当鼠标在控件上单击时触发
Closed 窗口实际被关闭时触发
CloseUp 当下拉日历中选择一个日期时由日期时间采集器触发
Closeing 用户正在关闭窗口过程中触发
DateChanged 当月份日历控件的日期范围修改时触发
DateSelected 当月份日历控件的日期或范围被选择时触发
Deactivate 当窗体被置无效时触发
DoubleClick 当鼠标在控件上双击时触发
DragDrop 当控件在窗体上拖动时触发
DragEnter 当鼠标将一个项拖到控件的客户区域内时发生
DragLeave 当鼠标将一个项拖出到控件的客户区域内时发生
DragOver 当一个拖动操作正在进行且该项在控件的客户区域上时发生
DrawItem 当状态条控件的面板需要重新绘制时触发
Enter 当一个控件成为当前窗体的激活控件时触发
Format 当一个控件请求在其回溯区展示文本时触发
FormatQuery 当一个控件查询如何展示或绘制一个自定义展示的字符串时
GiveFeedBack 当鼠标拖动一个选项时触发,从控件中获取信息并反馈到事件中
Help 当用户从控件请求帮助时发生
InputLangChange 当窗体的输入语言事件发生变化时触发
InputLangChangeRequest 当系统请求窗体的输入语言修改时触发
KeyDown 当按键被首次按下时触发
KeyPress 当按键被按下且首次被释放时触发
KeyUp 当按键被释放时触发
Layout 当控件首次布局其内容时触发
Leave 当在窗体上控件不在是激活状态的控件时触发
MDIChildActivate 当一个MDI子窗口被激活时触发
MenuComplete 当菜单选择完成时触发,此时已退出模式消息循环
MenuStart 当菜单展开时触发,此时已进入模式消息循环
MouseDown 当鼠标的按钮被按下时触发
MouseEnter 当鼠标首次进入控件的客户区时触发
MouseHover 当鼠标在控件的客户区持续一段时间时触发
MouseLeave 当鼠标离开控件的客户区时触发
MouseMove 当鼠标移动时触发
MouseUp 当鼠标按钮释放时触发
Move 当控件移动事触发
PanelClick 当状态条控件内面板被单击时触发
QueryContinueDrag 当鼠标拖动一个选项时触发,会询问系统是否允许拖放操作
Resize 当窗体或控件修改大小时触发
Scroll 当滚动条滑块(thumb)被移动时触发
TextChanged 当控件的文本属性改变时触发
UserString 当控件需要解析一个字符串时触发
appCanParse属性必须是True
Validated 当控件被验证时触发
Validating 当控件正在被验证时触发
ValueChanged 当控件的值被改变时触发

参考资料:http://wenwen.soso.com/z/q169864978.htm

参考技术A 格式: 控件名_事件名(object sender,EventArgs e)第一个参数object sender 提供事件的来源,第二个参数EventArgs e提供对象引用以及事件的信息文档说明:事件名 触发条件Activate 当窗口激活时触发ButtonClick 当工具条按钮被单击时触发ButtonDropDown 当工具条控件的ButtonDropDown样式被单击时触发CheckStateChanged 当控件的CheckState属性修改时触发CheckedChanged 当控件的Checked属性修改时触发Click 当鼠标在控件上单击时触发Closed 窗口实际被关闭时触发CloseUp 当下拉日历中选择一个日期时由日期时间采集器触发Closeing 用户正在关闭窗口过程中触发DateChanged 当月份日历控件的日期范围修改时触发DateSelected 当月份日历控件的日期或范围被选择时触发Deactivate 当窗体被置无效时触发DoubleClick 当鼠标在控件上双击时触发DragDrop 当控件在窗体上拖动时触发DragEnter 当鼠标将一个项拖到控件的客户区域内时发生DragLeave 当鼠标将一个项拖出到控件的客户区域内时发生DragOver 当一个拖动操作正在进行且该项在控件的客户区域上时发生DrawItem 当状态条控件的面板需要重新绘制时触发Enter 当一个控件成为当前窗体的激活控件时触发Format 当一个控件请求在其回溯区展示文本时触发FormatQuery 当一个控件查询如何展示或绘制一个自定义展示的字符串时GiveFeedBack 当鼠标拖动一个选项时触发,从控件中获取信息并反馈到事件中Help 当用户从控件请求帮助时发生InputLangChange 当窗体的输入语言事件发生变化时触发InputLangChangeRequest 当系统请求窗体的输入语言修改时触发KeyDown 当按键被首次按下时触发KeyPress 当按键被按下且首次被释放时触发KeyUp 当按键被释放时触发Layout 当控件首次布局其内容时触发Leave 当在窗体上控件不在是激活状态的控件时触发MDIChildActivate 当一个MDI子窗口被激活时触发MenuComplete 当菜单选择完成时触发,此时已退出模式消息循环MenuStart 当菜单展开时触发,此时已进入模式消息循环MouseDown 当鼠标的按钮被按下时触发MouseEnter 当鼠标首次进入控件的客户区时触发MouseHover 当鼠标在控件的客户区持续一段时间时触发MouseLeave 当鼠标离开控件的客户区时触发MouseMove 当鼠标移动时触发MouseUp 当鼠标按钮释放时触发Move 当控件移动事触发PanelClick 当状态条控件内面板被单击时触发QueryContinueDrag 当鼠标拖动一个选项时触发,会询问系统是否允许拖放操作Resize 当窗体或控件修改大小时触发Scroll 当滚动条滑块(thumb)被移动时触发TextChanged 当控件的文本属性改变时触发UserString 当控件需要解析一个字符串时触发appCanParse属性必须是TrueValidated 当控件被验证时触发Validating 当控件正在被验证时触发ValueChanged 当控件的值被改变时触发

c# 移除类中所有事件的绑定

单例中为防止多处注册事件引起异步触发时发生报错,网上找了一圈没找到想要的方法。

【异常类型】:ArgumentException
【异常信息】:该委托必须有一个目标(且仅有一个目标)。

结合网上资料整合了个方法

        /// <summary>
        /// 移除所有注册事件
        /// </summary>
        public void RemoveAllEvent()
        
            var newType = this.GetType();
            foreach (var item in newType.GetEvents())
            
                FieldInfo _Field = newType.GetField(item.Name, BindingFlags.Instance | BindingFlags.NonPublic);
                if (_Field != null)
                
                    object _FieldValue = _Field.GetValue(this);
                    if (_FieldValue != null && _FieldValue is Delegate)
                    
                        Delegate _ObjectDelegate = (Delegate)_FieldValue;
                        Delegate[] invokeList = _ObjectDelegate.GetInvocationList();
                        if (invokeList != null)
                        
                            foreach (Delegate del in invokeList)
                            
                                item.RemoveEventHandler(this, del);
                            
                        
                    
                
            
        

 

测试:

技术图片
using System;
using System.Reflection;

namespace FormTest

    class Class1
    
        public event Action OnTest;
        public event Action OnShow;

        /// <summary>
        /// 移除所有注册事件
        /// </summary>
        public void RemoveAllEvent()
        
            var newType = this.GetType();
            foreach (var item in newType.GetEvents())
            
                FieldInfo _Field = newType.GetField(item.Name, BindingFlags.Instance | BindingFlags.NonPublic);
                if (_Field != null)
                
                    object _FieldValue = _Field.GetValue(this);
                    if (_FieldValue != null && _FieldValue is Delegate)
                    
                        Delegate _ObjectDelegate = (Delegate)_FieldValue;
                        Delegate[] invokeList = _ObjectDelegate.GetInvocationList();
                        if (invokeList != null)
                        
                            foreach (Delegate del in invokeList)
                            
                                item.RemoveEventHandler(this, del);
                            
                        
                    
                
            
        
    
View Code
技术图片
        private void button7_Click(object sender, EventArgs e)
        
            Class1 cla = new Class1();
            cla.OnShow += cla_OnShow;
            cla.OnShow += cla_OnShow;
            cla.OnTest += cla_OnTest;

            cla.RemoveAllEvent();
        

        void cla_OnTest()
        
            throw new NotImplementedException();
        

        void cla_OnShow()
        
            throw new NotImplementedException();
        
View Code

技术图片技术图片

 

以上是关于C# 中所有触发事件的说明的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 常用属性说明(超长)

Incrontab(事件触发任务命令)文档说明

Delphi 常用属性说明(超长)

C#中怎样用代码实现按钮的click事件!最好能举个例子说明下!

C# SocketAsyncEventArgs 停止触发完成事件

C#中,学习一个控件的使用要从那几个方面入手?以Button控件的使用为例子进行说明,并写出单击事件的代码。