`
WPComming
  • 浏览: 58906 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

技巧篇:如何重写基类的事件

 
阅读更多

先说说需求,也就是我们要达到的效果,希望扩展按钮控件,增加一些属性,但同时我们希望默认事件仍使用Click事件,不过,在事件参数中,我们希望能够传递更多的信息,而不是Button.Click默认的参数。

当然,我们首先要写一个自定义的事件参数,为了简单起见,我们的自定义按钮控件,增加一个TagNumber属性,它传递一个整型数据,当我们处理控件的Click事件,能够从事件参数类实例中取得我们在这个属性中设置的值,因此,我们需要一个MyButtonClickAgre,它从EventArgs类派生。


现在,从Button类派生一个新类。

好,TagNumber属性定义好了,Browsable特性表示控件中设计时是否显示在“属性”窗口中,Description用一些文本描述属性有什么用途这类的信息,Category表示该属性在“属性”窗口属于哪个类别,可能很多人觉得要传递一个英文的字符串作为分类名,其实不一定,如果你的VS是中文版的,你完全可以使用中文名字,如上面的“数据”。

在“属性”窗口中浏览该控件的属性如下图所示。

下面,我们还有一件重要的事情要做,那就是重写基类的Click事件。这里有两种方法:

1、第一种方法不算得上是重写事件,应该说是我们经常做的重写On????方法,如我们下面要通过重写OnClick方法来达到我们要的效果。


这样,我们自定义的事件参数就传到事件处理程序了。

2、第二种方法才算是重写事件,通过new关键字重新定义一个Click事件。


这个时候,我们就不需要基类的OnClick方法了,所以也不用再写上base.OnClick(e);。

现在,我们重新生成一下项目,切换到WinForm设计器窗口,在工具箱中就能看到我们自定义的控件了。

好,现在可以测一测这个新控件了。


看看结果。


分享到:
评论

相关推荐

    C#中面向对象编程(基础篇)(2)

    ### C#中面向对象编程(基础篇)(2) #### 目标 本章节的目标是深入探讨C#语言中面向对象编程的一些基本概念和技术。主要包括: - 类的定义及其成员。 - 构造函数和析构函数的作用及使用场景。 - 垃圾收集器的工作...

    C#自定义控件---自定义水晶按钮控件完整源码.rar

    - 选择基类:根据需求,可以选择WinForms的`Control`类或更具体的控件,如`Button`作为基类。 - 重绘控件:通过覆盖`OnPaint`方法,使用`Graphics`对象和`Pen`、`Brush`等绘制控件的外观。 - 事件处理:添加或...

    自定义控件其实很简单1/12

    3. **响应触摸事件**:如果需要用户交互,需要重写`onTouchEvent()`方法,处理用户的触摸动作。根据ACTION_DOWN、ACTION_MOVE、ACTION_UP等事件,实现相应的逻辑。 4. **属性定制**:为了在XML布局文件中方便地设置...

    .net C# 面试题 软件工程师 面试答题集

    Override是子类重写基类的虚方法,保持调用接口不变,但提供不同的实现。 7. **B/S架构中的数据传递**:在不能使用Session、Cookie、Application时,可以使用`Server.Transfer`在页面间传递变量。 8. **遍历控件**...

    Android自定义控件

    本篇文章将深入探讨Android自定义控件的相关知识,包括自定义控件的分类、创建过程以及常见技巧。 一、自定义控件的分类 1. 继承已有控件:通过继承已有的Android内置控件(如TextView、ImageView等),并重写其...

    C++程序设计原理-与-实践-第二版-基础篇.pdf

    多态性是通过虚函数实现的,允许基类指针或引用调用派生类的重写方法,增强了代码的灵活性和可扩展性。 五、模板 模板是C++的泛型编程工具,允许编写不依赖具体类型的函数和类。函数模板可以生成处理不同类型参数的...

    A0504深度定制自定义组件CustomViewMeasure1

    3. **事件监听**:自定义事件监听器,如需要的话,可以通过重写 `OnClickListener`、`OnTouchListener` 等接口或创建新的监听器。 4. **绘制逻辑**:重写 `onMeasure()` 和 `onDraw()` 方法。`onMeasure()` 用于...

    自定义View基础

    5. **事件处理**:通过重写`onTouchEvent()`等方法,可以监听并处理用户的触摸事件。此外,还可以使用`setOnClickListener()`等方法添加点击事件监听器。 6. **性能优化**:自定义View时要考虑性能,避免在onDraw()...

    PyQt5(3)之基本控件QWidget.docx

    此外,`QWidget`还包含了一些基本的事件处理功能,比如键盘和鼠标事件。 ### 二、QWidget类的API `QWidget`提供了一系列的方法来控制其外观和行为,例如: - `resize(width, height)`:调整控件的大小。 - `move(x...

    [NET 4.0面向对象编程漫谈 基础篇].金旭亮--高清版.pdf

    在.NET 4.0面向对象编程漫谈基础篇中,金旭亮详细介绍了.NET框架下的面向对象编程的基础知识和技巧。面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它使用“对象”来设计软件。对象可以包含数据...

    用户登录界面的设计与实现PPT学习教案.pptx

    - **事件处理**:实现`ActionListener`接口,重写`actionPerformed`方法,当用户点击登录按钮时,获取文本框中的内容并进行验证。 6. **组件继承关系**: - Java组件类层次结构中,`Object`是所有类的基类,`...

    Qt.rar_qt2

    10. **事件处理**:Qt中的事件模型是基于事件队列的,通过重写特定的事件处理函数可以响应用户输入和其他事件。 学习Qt不仅需要掌握以上基础知识,还要通过实际项目练习来提升技能。"Qt嵌入式图形开发(实战篇)....

    swift-导航栏颜色渐变通过给viewController添加属性可方便控制titleitem导航栏颜色变化

    这篇教程将专注于如何通过Swift实现导航栏(NavigationBar)的颜色渐变效果,并通过为UIViewController添加属性来控制标题(title)、导航栏按钮(items)以及导航栏本身的颜色变化。这种技术可以使应用程序的界面更...

    自定义viewgroup

    本篇将深入探讨如何利用谷歌官方的自定义ViewGroup实例来理解这一关键概念。 首先,我们要明白ViewGroup是Android UI体系中的一个基类,它是View的子类,同时也是其他View(如Button、TextView等)的容器。通过...

    面向对象复习题

    虚函数允许子类重写基类的函数,从而在运行时根据对象的实际类型调用适当的方法。接口则是一组方法签名的集合,不包含任何实现,可以被多个类实现,提供了一种统一的调用方式。 面向对象编程还涉及到设计模式,如...

    自定义控件其实很简单1/3

    3. 处理事件:若需要响应用户的触摸事件,可重写`onTouchEvent()` 方法。根据MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP等状态,实现点击、滑动等交互。 4. 属性:为了在XML布局中方便地配置自定义控件,...

    各种效果弹框

    在本篇文章中,我们将深入探讨弹框的概念、设计原则以及如何在实际开发中创建具有各种效果的弹框。 首先,我们要理解弹框的基本功能。弹框通常分为警告、确认、信息和询问等类型,它们以悬浮的方式出现在当前操作的...

    具有位图背景的列表视图控件

    3. **重写OnPaint**:在OnPaint()方法中,我们将绘制位图作为控件的背景,然后调用基类的OnPaint()方法来绘制列表视图的正常内容。这里需要使用CDC类来处理绘图操作。 ```cpp void CBitmapListView::OnPaint() { ...

    Android自定义组件一[文].pdf

    本篇文章将详细介绍如何在Android中实现自定义组件,主要分为以下几个方面: 首先,自定义组件可以大致分为三类: 1. 在View或SurfaceView上进行自绘,通过重写onDraw()方法来绘制特定的图形和动画。 2. 创建...

Global site tag (gtag.js) - Google Analytics