c# 自定义控件 生成代码,c#用户控件和自定义控件

  c# 自定义控件 生成代码,c#用户控件和自定义控件

  自定义控件开发

  一般来说,Visual Studio 2005自带的几十个控件足够我们使用了。但是,在一些特殊的需求中,可能需要一些特殊的控件来与用户进行交互。这时候就需要开发新的控件,满足用户的需求。

  要开发自己的控件,有几种方法:

  复合控件:将现有的各种控件组合成一个新的控件,以满足用户的需求。

  扩展控件:在现有控件的基础上,派生出新的控件,增加新的功能,或者修改原有的功能,以满足用户的需求。

  自定义控件:它直接从系统派生。Windows.Forms.Control类,也就是说,它是自行设计和实现一个全新控件的最灵活、最强大的方法。但是,它对开发者的要求最高。若要实现自定义控件,必须为Control类的OnPaint事件编写代码,并在OnPaint事件中绘制自定义控件。同时,您可以重写Control类的WndProc方法来处理基础Windows消息。所以要实现一个自定义控件,对开发者的要求很高,需要开发者了解GDI和Windows API的知识。

  下面给大家介绍这三种方法。

  复合控件(复合控件)

  复合控件实际上是控件的集合,类似于堆叠的木头。因此,根据用户的需要,VS 2005工具箱中的控件可以任意组合,形成一个复合控件。在将来的使用中,生成的复合控件将被视为控件。

  复合控件通常派生自UserControl类,因此复合控件(用户控件)可以在UserControl测试容器中进行测试。

  要创建组合:

  步骤1:创建一个新的Windows控件库项目“CompositeControlDemo”

  步骤2:将Visual Studio 2005中的控件组合添加到复合控件中。

  添加了一个标签控件和一个计时器控件。

  Label控件的Text属性设置为“”,Timer控件的Interval属性设置为1000毫秒,即1秒,Enabled属性设置为True。

  设置定时器控件的Tick事件并添加代码。

  步骤3:向复合控件添加属性。我们添加了前景色和背景色属性。

  步骤4:生成复合控件。

  直接按F5,或者点击生成菜单,选择生成解决方案菜单,生成复合控件。

  我们可以看到生成的复合控件以. dll文件的形式存在。

  第五步:在工具箱中显示复合控件,并设置相应的图标。

  1.在工具箱中显示复合控件。

  2.在工具箱中设置复合控件的图标。

  在这里,我们可以看到复合控件已被添加到工具箱中,但使用默认图标显示(小齿轮),有两种方法可以在工具箱中显示自定义图标。这里,先说第一个。

  [工具箱位图(键入(按钮))]

  步骤6:测试复合控件。

  实际上,当我们直接按F5生成复合控件时,会弹出一个“用户控件测试容器”。在这个容器中,显示了我们的复合控件MyDigitalClock的操作,同时,它的右侧还有一个属性窗口。通过更改属性窗口中的属性设置,可以更改复合控件的相应状态。例如,如果我们修改ClockBackColor属性和ClockForeColor属性(即设置背景色和前景色),我们可以看到MyDigitalClock控件的外观发生了变化。

  以上是通过“用户控件测试容器”来测试复合控件。事实上,我们还可以通过创建一个新的Windows项目来测试复合控件。

  1.创建一个新的测试项目“TestCompositeControls”。

  2.将复合控件“MyDigitalClock”添加到窗体中。

  3.设置MyDigitalClock控件的属性。

  4.按F5运行并观察窗体中的MyDigitalClock控件。

  扩展控件:在现有控件的基础上,派生出新的控件,增加新的功能,或者修改原有的功能,以满足用户的需求。

  扩展控件保留了原控件的接口、属性和方法,同时可以扩展原控件的功能,实现新的功能,满足用户的需求。

  扩展控件可以两种方式扩展:

  1.扩展用户界面,界面上有改动,让它看起来更好看。

  要改变界面,需要重新加载OnPaint方法,重新绘制原控件的界面。

  2.拓展功能,强化功能。

  功能增强就是增加新的功能来满足用户的需求。

  要创建扩展控件:

  步骤1:创建一个新的类库项目。

  步骤2:添加引用和继承。

  例如,如果我们想扩展按钮控件,我们需要添加组装系统。包含按钮控件的窗体。

  同时,它继承自制度。窗口.窗体.按钮

  步骤3:重载OnPaint方法,扩展用户界面,或者添加新的函数。

  步骤4:生成扩展控件。

  直接按F5,或者点击生成菜单,选择生成解决方案菜单,生成复合控件。

  我们可以看到生成的扩展控件以. dll文件的形式存在。

  第五步:在工具箱中显示扩展控件,并设置相应的图标。

  与复合控件相同

  步骤6:测试扩展控件。

  复合控件通常派生自UserControl类,因此复合控件(用户控件)可以在UserControl测试容器中进行测试。但是,对于扩展控件,通常它们不是直接从UserControl类派生的,而是从需要扩展的控件本身派生的。就像我们后面要讲的XButton扩展控件一样,是从Button类继承而来,通过添加类的方式添加到项目中。(复合控件是待验证的控件库项目。)这时就没有办法在“UserControl测试容器”中进行测试了,只能新建一个。

  添加测试项目。

  自定义控件:直接从系统派生。Windows.Forms.Control类,也就是一个全新的控件,自己设计,从头创建。

  这是最灵活、最强大的方法,但对开发者的要求也最高。

  若要实现自定义控件,可以使用Control类提供的最基本的函数。

  Control类提供了创建控件所需的基本功能,包括鼠标和键盘处理事件等。但是,应该注意,Control类不提供创建控件所需的图形界面和特定函数。因此,要创建自定义控件,必须自己绘制控件的界面和具体函数。

  要绘制自定义控件的界面,必须在OnPaint事件中编写代码,并在OnPaint事件中实现自定义控件的绘制。还可以重写Control类的WndProc方法来处理底层Windows消息。

  所以要实现一个自定义控件,对开发者的要求很高,需要开发者了解GDI和Windows API的知识。

  创建自定义控件是开发自己的控件的三种方法中最复杂的一种,因为您可以自己编写。控件有什么属性,自己写;该控件使用什么功能?自己写吧。

  要创建自定义控件:

  步骤1:创建新的类库项目(直接从Control类派生)或新的Windows控件库项目(从UserControl派生)

  步骤2:添加一个引用(仅当它直接从控件类派生时才需要)

  一般来说,自定义控件都有相应的用户界面,所以至少要引用系统。应添加Windows.Forms。

  第三步:重写OnPaint事件,绘制用户界面。

  步骤4:向自定义控件添加属性并实现功能。

  步骤5:生成自定义控件。

  第6步:在工具箱中显示自定义控件,并设置相应的图标。

  步骤7:测试自定义控件。

  自定义控件的测试:

  如果自定义控件是从Control类派生的,则不能在UserControl测试容器中测试自定义控件,只能创建一个新的Windows应用程序来测试自定义控件。

  当然,自定义控件不一定要从Control类派生,也可以从UserControl类派生。如果它们是从UserControl类派生的,则可以在UserControl测试容器中对它们进行测试。

  要创建自定义控件:

  步骤1:创建新的类库项目(直接从Control类派生)或新的Windows控件库项目(从UserControl派生)

  步骤2:添加一个计时器控件,并设置属性和事件。

  第三步:重写OnPaint事件,绘制用户界面。

  步骤4:生成自定义控件。

  步骤5:测试自定义控件。

  您还可以创建一个新的TestCustomControls项目。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 设计一个简单的C#控制台应用程序,C#控制台程序,C# 创建控制台应用程序
  • 深入解析windows第8版,深入解析C#(第4版)
  • 数组代码,c# 数组操作,C# 数组实例介绍(图文)
  • 学会C#要多久,学会c#要多久,c#学习之30分钟学会XAML
  • 回溯法01背包问题c,回溯法求解01背包问题伪代码,C#使用回溯法解决背包问题实例分析
  • xml文件转义字符,xml转意字符,C# XML中的转义字符操作
  • winform 进度条控件,c# 进度条使用
  • winform 进度条控件,c# 进度条使用,C#使用winform实现进度条效果
  • winform backgroundworker,c# isbackground
  • winform backgroundworker,c# isbackground,C# BackgroundWorker用法详解
  • lua与c#交互,lua c#
  • lua与c#交互,lua c#,ToLua框架下C#与Lua代码的互调操作
  • linq c#,linq原理 c#
  • linq c#,linq原理 c#,c#中LINQ的基本用法实例
  • java decimal保留两位小数,sql中decimal函数保留2位小数,C#中decimal保留2位有效小数的实现方法
  • 留言与评论(共有 条评论)
       
    验证码: