C#为控件添加自定义事件及自定义触发
作者:Code- 发布时间:2021-11-24 14:29:16
标签:C#,控件,自定义事件,自定义触发
先随便搞个事件吧
public class TestEventrgs : EventArgs
{
private string _name;
public string Name { get { return _name; } }
private int _age;
public int Age { get { return _age; } }
public TestEventrgs(string name,int age)
{
_name = name;
_age = age;
}
}
分两种,自定义控件和winfrom下的已有控件
先来个自定义控件吧
随便搞个界面
上马
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSDN
{
public partial class UserControl1 : UserControl
{
int ClickNuM = 0; //点击次数
public event EventHandler<TestEventrgs> TestEventrg;//自定义的事件
public UserControl1()
{
InitializeComponent();
this.TestEventrg += new EventHandler<TestEventrgs>(DangeTip);//自定义事件绑定的方法
}
private void DangeTip(object sender, TestEventrgs e)
{
string tool = string.Format("危险提示:{0}你小子别狂点,仗着{1}岁手速快是吧!?",e.Name,e.Age);
MessageBox.Show(tool);
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
ClickNuM++;
if (ClickNuM>5)
{
//触发自定义事件
this.TestEventrg?.Invoke(this,new TestEventrgs("ming",17));//输入的参数可以自己传入
ClickNuM = 0;
}
}
}
}
放到界面上,狂点之后
接下来是winfrom下的已有控件,以button为例子
先添加一个组件
改为继承 Button,并添加相应的自定义事件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSDN
{
public partial class MyButton : Button
{
public MyButton()
{
InitializeComponent();
}
public event EventHandler<TestEventrgs> TestEventrg;
public MyButton(IContainer container)
{
container.Add(this);
InitializeComponent();
}
}
}
将组件从工具箱添加到界面,添加对应方法
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSDN
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
int ClickNuM = 0;
private void myButton1_TestEventrg(object sender, TestEventrgs e)
{
string tool = string.Format("危险提示:{0}你小子别狂点,仗着{1}岁手速快是吧!?", e.Name, e.Age);
MessageBox.Show(tool);
}
private void myButton1_Click(object sender, EventArgs e)
{
ClickNuM++;
if (ClickNuM > 5)
{
myButton1_TestEventrg(this, new TestEventrgs("lang", 88));
ClickNuM = 0;
}
}
}
}
运行之后,狂点。触发
来源:https://blog.csdn.net/weixin_39448579/article/details/124444448


猜你喜欢
- 本文实例讲述了C#中const用法。分享给大家供大家参考。具体用法分析如下:const是一个c语言的关键字,它限定一个变量不允许被改变。使用
- 一维数组1.一维数组的定义方式:int[] array1 = new int[3];//声明创建一个包含3个元素的数组array1(初始值为
- 最近的项目,做图片的另存为功能,需要把图片存成jpg,png,bmp。对于jpg和png来说相对简单,android提供了bitmap.co
- 本文实例为大家分享了C#简单聊天室雏形的具体代码,供大家参考,具体内容如下程序使用的控制台的黑窗口模拟程序,第一次涉及网络编程,写出来方便以
- 说明:基于atguigu学习笔记。简介Webflux是 Spring5 添加新的模块,用于 web 开发的,功能和 SpringMVC 类似
- Bean Validation 中内置的 constraint @Null 被注释的元素必须为 null @NotNull 被注释的元素必须
- java 枚举的功能挺多,但是坑更多,使用的时候要注意。如下面这个枚举。@Getter@AllArgsConstructorpublic e
- 之前做到日期时间的时候,有许多格式问题和日期时间比较问题,以及相关条件约束,因为不熟悉这个,浪费许多时间,查找相关资料,记录,以作备用。1.
- MyBatis中PageHelper不生效今天使用pageHelper,发现设置了PageHelper.startPage(page, pa
- 批量修改代码如下<update id="UPDATE_HOTEL_REAL_TIME_PRICE" paramet
- 对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去
- SpringMVC文件上传中要解决的问题一、中文文件名编码问题通过过滤器解决二、文件位置存储问题放在当前项目下,作为静态资源,这样可以通过U
- 本文实例讲述了C#通过重写Panel改变边框颜色与宽度的方法。分享给大家供大家参考。具体实现方法如下:using System;using
- Queue接口先看下Queue的继承关系和其中定义的方法:Queue继承自Collection,Collection继承自Iterable。
- 调用微信接口前需要准备的内容。1.微信公众平台的appid2.微信公众平台的secret3..获取tokenid4.获取ticket5.生成
- 要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题,我按照这思路去大概实现了一下。1.使用ht
- 1.值类型值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。值类型的变量直接存储数据,分配在托管栈中。变量会在创建
- Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。 共同点: 1. 他们
- 析构函数用于析构类的实例。备注不能在结构中定义析构函数。只能对类使用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构
- 在看内存管理术语表的时候偶然发现了”Pig in the Python(注:有点像中文里的贪心不足蛇吞象)”的定义,于是便有了这篇文章。表面