C#如何创建自定义控件以及添加自定义属性和事件使用

时间:2024-03-30 21:39:55

        C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加一些功能,比如按钮按下要一个图片,弹起要另一个图片这样的工作。当然,我们可以对相关按钮在点击函数中进行更改其背景图片,但是这对于大量的按钮调用来说十分不方便,代码重用率相当的高,会导致使用上的卡顿,在这种情况下,我们可以将这个功能封装起来,这样每次调用起来就很方便,也节省了代码的重用率。

       那么如何将上述的那么一个简单的功能封装起来呢,我们首先考虑到的便是按键的属性,我们可以在相关按键中添加新的属性来完成这一步操作。

       首先先建立一个用户类库:

       C#如何创建自定义控件以及添加自定义属性和事件使用

          然后再该类库下添加一个新的组件:

C#如何创建自定义控件以及添加自定义属性和事件使用

          在组件中我们需要首先继承Button类

C#如何创建自定义控件以及添加自定义属性和事件使用

        然后需要添加新的属性供新的控件使用,这里我们添加四个属性:1、按钮按下的图片 2、按钮开启时的图片 3、按钮关闭时的图片 4、该按钮是单次点击型还是开光状态型的模式选择。

C#如何创建自定义控件以及添加自定义属性和事件使用

        在该部分,首先需要定义存储默认状态的量,如上图所示,存储各个图片的默认值为null。Description参数为属性的说明注释,Category属性为当前该属性所属的类,下面定义的函数为将用户选择的参数进行返回和获取的一个过程,用户定义的属性名即函数名。

        函数体为常见的{get;set;}形式:

C#如何创建自定义控件以及添加自定义属性和事件使用

           该部分将用户选择的参数赋值给之前定义的图片文件,至此为止属性已经简单的添加完毕,如将该文件编译得到的dll文件导入库中进行使用,我们会发现,拖出来的按钮控件下面已经多了上面定义的所有属性。

C#如何创建自定义控件以及添加自定义属性和事件使用   

        但是这些属性还并没有用,只是简单的进行了赋值,要让这些属性进行动作,需要在按钮中添加新的事件。这里我们添加了两个事件,一个是鼠标按下的事件,还有一个鼠标弹起的按键:

C#如何创建自定义控件以及添加自定义属性和事件使用

         上面的部分就是简单的一些按钮属性设置,比如将按钮背景变透明之类的。

         添加的新的事件中,我们需要对按钮的相应动作进行相应,在按下时获得按下时的图片,在弹起时获得弹起时的图片即可。

C#如何创建自定义控件以及添加自定义属性和事件使用

C#如何创建自定义控件以及添加自定义属性和事件使用

           这里buttonflag为定义的一个public变量,用户可以在使用Click事件中判断是否开启成功,若没有开启成功可以将该变量置为原来的值,按钮相应的也不会发生变化。

           state用来判断该按钮是否是单次点击的按钮,如果是,那弹起时还是原来的图片。有些按键没有按下时的图片,也不予变化。

           至此为止,一个新的封装已经制作完毕,将该文件编译为dll并加载到工程中就能看到效果了,下面是测试效果图:

C#如何创建自定义控件以及添加自定义属性和事件使用C#如何创建自定义控件以及添加自定义属性和事件使用C#如何创建自定义控件以及添加自定义属性和事件使用

           这是一个带按下动画的按钮。

C#如何创建自定义控件以及添加自定义属性和事件使用C#如何创建自定义控件以及添加自定义属性和事件使用

          这是一个不带按下动画的按钮。

C#如何创建自定义控件以及添加自定义属性和事件使用C#如何创建自定义控件以及添加自定义属性和事件使用C#如何创建自定义控件以及添加自定义属性和事件使用

      这是一个单次点击的按钮。