自定义控件的制作
C# 自定义控件制作和使用实例

C# 自定义控件制作和使用实例第一步:新建一个控件库项目:myControl第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下:如上图,设置pictureBox的Name为picBox,背景为白色,Button的Name为btnOpen,另外靠左的三个Lable的Text属性分别为:文件名称,文件大小,文件尺寸,靠右的三个Lable的Name分别为:lblName, lblLength, lblSize.第三步:添加处理程序代码在btnOpen的Click事件写入代码,打开一个打开文件对话框,选择一个图形文件,打开并将它显示在picBox上。
private void btnOpen_Click(object sender, EventArgs e){OpenFileDialog ofdPic = new OpenFileDialog();ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif";ofdPic.FilterIndex = 1;ofdPic.RestoreDirectory = true;ofdPic.FileName = "";if (ofdPic.ShowDialog() == DialogResult.OK){string sPicPaht = ofdPic.FileName.ToString();FileInfo fiPicInfo = new FileInfo(sPicPaht);long lPicLong = fiPicInfo.Length / 1024;string sPicName = ;string sPicDirectory = fiPicInfo.Directory.ToString();string sPicDirectoryPath = fiPicInfo.DirectoryName;Bitmap bmPic = new Bitmap(sPicPaht);if (lPicLong > 400){MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!");}else{Point ptLoction = new Point(bmPic.Size);if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height){picBox.SizeMode = PictureBoxSizeMode.Zoom;}else{picBox.SizeMode = PictureBoxSizeMode.CenterImage;}}picBox.LoadAsync(sPicPaht);lblName.Text = sPicName;lblLength.Text = lPicLong.ToString() + " KB";lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString();}}第四步:测试控件按F5启动调试,弹出如下窗体:单击“打开”按钮,弹出打开文件对话框:选择一张图片,单击“打开”,可以看到在picBox上显示了打开的图片:第五步:查看成生的控件文件,到该项目文件目录下的bin->debug中可找到。
MFC自定义控件编写过程

MFC自定义控件编写过程MFC(Microsoft Foundation Class)是微软公司在Windows操作系统上开发的一套C++应用程序框架。
它提供了一系列的类和函数,使得开发者可以更快、更方便地开发Windows应用程序。
在MFC中,我们可以根据需要自定义控件。
编写MFC自定义控件的过程主要包括以下几个步骤:1.定义控件类:首先,我们需要定义一个派生自CWnd或CButton等基类的控件类。
派生类通常以"C"作为前缀,例如CCustomControl。
在控件类中,我们可以添加自定义的属性和方法。
2.注册控件类:在应用程序初始化时,我们需要调用AfxRegisterClass函数来注册自定义的控件类,以便能够在程序中使用。
3.创建控件对象:在创建控件的对话框或窗口时,我们需要使用Create函数来创建自定义的控件对象。
在Create函数中,我们可以指定控件的位置、大小等属性。
4.响应消息:在控件类中,我们可以重写一些成员函数来响应用户的消息,例如鼠标点击、键盘输入等。
我们可以使用ON_WM_XXX宏将消息和相应的成员函数关联起来。
5.绘制控件:在绘制控件时,我们可以重写控件类的OnPaint函数。
在OnPaint函数中,我们可以使用CDC类的成员函数来绘制自定义的图形。
6.响应交互:根据自定义的需求,我们可以在控件类中重写一些成员函数来响应用户的交互。
例如,在Button控件中,我们可以重写OnLButtonDown函数来响应鼠标左键的点击事件。
7.添加消息处理:在控件类中,我们可以添加自定义的消息处理函数来处理特定的业务逻辑。
例如,在自定义的列表框中,我们可以添加一个AddItem函数来向列表中添加项目。
8.发送和接收消息:在需要与其他窗口或控件进行通信时,我们可以使用SendMessage和PostMessage函数来发送消息,并在控件类中重写相应的消息处理函数来接收并处理这些消息。
简单易学 图文并茂 VB制作WPF自定义控件 范例1

简单易学图文并茂创作控件自己创作控件,分三种主要的形式:复合控件,扩展控件,和自定义控件。
复合控件,顾名思义就是把现有的进行组合,让它们协作形成功能强大的新控件;扩展控件,是以某一现有控件为基础,让它具有新的功能;自定义控件,则是由作者完全操刀,建立一个全新的控件。
可以用一个比喻来理解这三种形式的区别:复合控件,就是你买好各个电脑配件,组装成一台电脑;扩展控件,就是把显卡上的零件更换几个,让它能力比标准产品更强大;自定义控件,就是自己制作一个名为“生人勿近”的硬件,他可以通过PCI插槽,安装到电脑上,一旦生人走近,它能识别并发出狗叫……综上,三种形式中,复合控件相对来说是最简单的;扩展控件在其次;自定义控件最难。
通常,我们使用前两种技术,就能创作出很复杂的控件了。
范例1:Excel的单元格Cell,当它没有焦点的时候,就是一个TextBlock,当它获得焦点,可以编辑的时候,就是一个TextBox框。
这样一个控件,将是我们今后制作表格控件的基础。
范例1中,我们会用到两种技术,复合控件和扩展控件。
在VS中,要进行如下的工作(推荐使用VS2010)1.新建一个Solution,名为Cell;2.添加一个名为“TestAPP”的WFP项目。
我们用他来测试成果;3.添加一个名为“Ctrl_Cell”的WFP用户控件项目。
然后,我们需要一个TextBlock,和一个TextBox控件,这是我们的演员。
考虑一下它们应该怎样演出,才能达到我们需要的效果:●平时这个控件,应该表现出TextBlock的外观;●当我们点击这个Label时,隐藏的TextBox控件跑到TextBlock的前面,并且它显示的值和TextBlock一样。
同时,这个值是可以编辑的;●编辑完TextBox的内容,按下Enter,或者点击屏幕上的其他控件,让TextBox失去焦点,TextBox消失。
TextBlock跑到前面来,并且显示编辑后的内容。
LabVIEW中创建自定义控件和自定义类型

图1.错误的表现形式
这是我今天做的一个“严格自定义类型”的实例。
请注意,在工具栏左侧,有一个被红色圆圈和反斜杠修饰的OK。
这意味着:错误。
请看LabVIEW对这个错误的解释,点击“帮助”弹出下图。
图2.点击OK后显示的错误原因
再来看一下LabVIEW的帮助对于这个错误的说明。
图3.来自帮助系统的说明
帮助文件还说到,控件编辑器(图1所示窗口)一次只能包含一个输入控件或显示控件。
数组或者簇本身就是一个控件,也可以说是一个容器(控件容器),所以能够包含多个控件,但对外还表现为一个控件。
下面再给出一个自己做的正确的例子。
图4.正确的“严格自定义类型”例子
错误提示的“OK”按钮不见了,取而代之的是一个扳手样子的按钮,我们可以进一步定义外观。
最后附上从LabVIEW帮助文件中打印出来的相关内容,权威、清晰。
创建自定义输入控件.pdf。
简单易学 图文并茂 VB制作WPF自定义控件 范例1

简单易学图文并茂创作控件自己创作控件,分三种主要的形式:复合控件,扩展控件,和自定义控件。
复合控件,顾名思义就是把现有的进行组合,让它们协作形成功能强大的新控件;扩展控件,是以某一现有控件为基础,让它具有新的功能;自定义控件,则是由作者完全操刀,建立一个全新的控件。
可以用一个比喻来理解这三种形式的区别:复合控件,就是你买好各个电脑配件,组装成一台电脑;扩展控件,就是把显卡上的零件更换几个,让它能力比标准产品更强大;自定义控件,就是自己制作一个名为“生人勿近”的硬件,他可以通过PCI插槽,安装到电脑上,一旦生人走近,它能识别并发出狗叫……综上,三种形式中,复合控件相对来说是最简单的;扩展控件在其次;自定义控件最难。
通常,我们使用前两种技术,就能创作出很复杂的控件了。
范例1:Excel的单元格Cell,当它没有焦点的时候,就是一个TextBlock,当它获得焦点,可以编辑的时候,就是一个TextBox框。
这样一个控件,将是我们今后制作表格控件的基础。
范例1中,我们会用到两种技术,复合控件和扩展控件。
在VS中,要进行如下的工作(推荐使用VS2010)1.新建一个Solution,名为Cell;2.添加一个名为“TestAPP”的WFP项目。
我们用他来测试成果;3.添加一个名为“Ctrl_Cell”的WFP用户控件项目。
然后,我们需要一个TextBlock,和一个TextBox控件,这是我们的演员。
考虑一下它们应该怎样演出,才能达到我们需要的效果:●平时这个控件,应该表现出TextBlock的外观;●当我们点击这个Label时,隐藏的TextBox控件跑到TextBlock的前面,并且它显示的值和TextBlock一样。
同时,这个值是可以编辑的;●编辑完TextBox的内容,按下Enter,或者点击屏幕上的其他控件,让TextBox失去焦点,TextBox消失。
TextBlock跑到前面来,并且显示编辑后的内容。
WPF控件开发之自定义控件

WPF控件开发之自定义控件Windows Presentation Foundation(WPF)控件模型的扩展性极大减少了创建新控件的需要。
但在某些情况下,仍可能需要创建自定义控件。
本主题讨论可最大限度减少在Windows Presentation Foundation(WPF)中创建自定义控件以及其他控件创作模型的需要的功能。
本主题还演示如何创建新控件。
AD:Windows Presentation Foundation(WPF)控件模型的扩展性极大减少了创建新控件的需要。
但在某些情况下,仍可能需要创建自定义控件。
本主题讨论可最大限度减少在Windows Presentation Foundation(WPF)中创建自定义控件以及其他控件创作模型的需要的功能。
本主题还演示如何创建新控件。
编写新控件的替代方法以前,如果要通过现有控件获取自定义体验,您只能更改控件的标准属性,例如背景色、边框宽度和字号。
如果希望在这些预定义参数的基础之上扩展控件的外观或行为,则需要创建新的控件,通常的方法是继承现有控件并重写负责绘制该控件的方法。
虽然这仍是一种可选方法,但也可以利用WPF丰富内容模型、样式、模板和触发器来自定义现有的控件。
下面的列表提供了一些示例,演示如何在不创建新控件的情况下使用这些功能来实现统一的自定义体验。
丰富内容。
很多标准WPF控件支持丰富内容。
例如,Button的内容属性为Object类型,因此从理论上讲,任何内容都可以显示在Button上。
若要让按钮显示图像和文本,可以将图像和TextBlock添加到StackPanel中,然后将StackPanel分配给Content属性。
由于这些控件可以显示WPF可视化元素和任意数据,因此,减少了创建新控件或修改现有控件来支持复杂可视化效果的需要。
样式。
Style是表示控件属性的值的集合。
使用样式可创建所需控件外观和行为的可重用表示形式,而无需编写新控件。
在LabVIEW中自定义控件

3,将出现如下图所示效果:
4,同样,在图片库中复制图片 至剪贴板中。在控件上右键选择从剪贴板导入图片>>真。
地址:北京市海淀区中关村东路 18 号财智国际大厦 A 座 9 层 电话:(010)82600055 传真:(010)62628056
5,不显示控件的文本。做出来的控件的状态将如下。
地址:北京市海淀区中关村东路 18 号财智国际大厦 A 座 9 层 电话:(010)82600055 传真:(010)62628056
二 自定义其他控件
在自定义按钮的第三种方法中,我们采取的是复制系统按钮的图片至剪贴板中。我们可以做一 个小的实验,当系统风格变换之后,控件的风格也会变成相应的风格。 那么根据这点提示,我们就可以进行其它控件的自定义了。比如说一直让大家都很头疼的物理通道 控件,长的太丑了,又没有系统风格的。下边就介绍创建系统风格的物理通道控件的步骤。 1, 打开 LabVIEW 开发环境,在前面板上放置下拉列表以及物理通道控件。
10,在图片库中,复制相应我们想用来替换 LED 的图片至剪贴板。如我们以 分别进行替换。替换完成后,该 LED 的图片项被替换为:
为例,
地址:北京市海淀区中关村东路 18 号财智国际大厦 A 座 9 层 电话:(010)82600055 传真:(010)62628056
布尔值为真 时
布尔值为假 时
这种方法做出来的控件的特点是: 1, 背景透明,但是实际控件大小为所选择的图片的大小。一般是一个规则的正方形或者长方形。
前文提到为什么要用新式按钮呢? 先来说一下按钮的图片项,每个布尔按钮在自定义模式下,是有若干图片项的,而新式按钮与 系统型的按钮的图片项是不同的。图片项的查看方式为:将控件窗口置为自定义状态下,在控件上 右键选择图片项即可看到该控件所拥有的图片项。
VB实现自我注册控件

VB实现自我注册控件VB语言是一种面向对象的编程语言,可用于开发图形用户界面(GUI)应用程序。
在VB中,可以通过编写自定义控件来增强应用程序的功能。
本文将介绍如何使用VB实现自我注册控件。
1.创建自定义控件:首先,需要创建一个新的VB项目,并添加一个新的用户控件。
可以通过以下步骤完成:-在"解决方案资源管理器"窗口中,右键单击项目名称,选择"添加"->"新建项"。
-在弹出的对话框中选择"用户控件",并指定一个名称,然后点击"添加"按钮。
-在设计视图中,可以向控件添加所需的控件和代码,以满足应用程序的需求。
2.实现自我注册功能:自我注册是指在用户控件中编写代码来自动将控件注册到工具箱中,以便在其他项目中重复使用。
可以通过以下步骤实现自我注册功能:- 使用`ToolboxItem(true)`属性标记自定义控件类,使之能够在工具箱中显示。
- 编写一个自定义的设计器类,并使用`Designer`属性将其与自定义控件类关联。
-在用户控件的代码视图中,增加以下代码:```vb<ToolboxItem(True)><Designer(GetType(CustomControlDesigner))>Public Class CustomControl'控件的代码和属性'控件的构造函数和事件处理方法End ClassPublic Class CustomControlDesignerInherits System.Windows.Forms.Design.ControlDesignerDim svc As ITypeResolutionService =CType(Me.GetService(GetType(ITypeResolutionService)), ITypeResolutionService)svc.ReferenceAssembly(System.Reflection.Assembly.GetExecutin gAssembly(.Location)Dim typeName As String = Me.GetType(.Namespace & "." & Me.GetType(.Name.Substring(0, Me.GetType(.Name.Length - "Designer".Length)Dim type As Type = svc.GetType(typeName)If (type IsNot Nothing) ThenDim host As IDesignerHost =CType(Me.GetService(GetType(IDesignerHost)), IDesignerHost) Dim tp As ToolboxItem = New ToolboxItem(type.FullName)Dim tlh As System.Drawing.Design.ToolboxItemCreatorCallback = New System.Drawing.Design.ToolboxItemCreatorCallback(AddressOf CreateInstance)type.Assembly.GetCustomAttributes(GetType(ToolboxItemAttribu te), False)HosttoolboxService.AddCreator(tlh, tp)End IfEnd SubPrivate Function CreateInstance(ByVal serializedObject As icContainer, ByVal reportedError As String) As Object Return cf.CreateInstance(serializedObject, reportedError)End FunctionEnd Class```通过以上步骤,自定义控件将被自动注册到工具箱中,并可以在其他VB项目中使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C# 自定义控件制作和使用实例
C# 自定义用户控件
上篇:控件制作
本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果。
我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享。
第一步:新建一个控件库项目:myControl
第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下:
如上图,设置pictureBox的Name为picBox,背景为白色,Button的Name为btnOpen,另外靠左的三个Lable的Text属性分别为:文件名称,文件大小,文件尺寸,靠右的三个Lable的Name分别为:lblName, lblLength, lblSize.
第三步:添加处理程序代码
在btnOpen的Click事件写入代码,打开一个打开文件对话框,选择一个图形文件,打开并将它显示在picBox上。
(加入using System.IO; 因为需要使用FileInfo)
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog ofdPic = new OpenFileDialog();
ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif";
ofdPic.FilterIndex = 1;
ofdPic.RestoreDirectory = true;
ofdPic.FileName = "";
if (ofdPic.ShowDialog() == DialogResult.OK)
{
string sPicPaht = ofdPic.FileName.ToString();
FileInfo fiPicInfo = new FileInfo(sPicPaht);
long lPicLong = fiPicInfo.Length / 1024;
string sPicName = ;
string sPicDirectory = fiPicInfo.Directory.ToString();
string sPicDirectoryPath = fiPicInfo.DirectoryName;
Bitmap bmPic = new Bitmap(sPicPaht);
if (lPicLong > 400)
{
MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!");
}
else
{
Point ptLoction = new Point(bmPic.Size);
if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height)
{
picBox.SizeMode = PictureBoxSizeMode.Zoom;
}
else
{
picBox.SizeMode = PictureBoxSizeMode.CenterImage;
}
}
picBox.LoadAsync(sPicPaht);
lblName.Text = sPicName;
lblLength.Text = lPicLong.ToString() + " KB";
lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString();
}
}
第四步:测试控件
按F5启动调试,弹出如下窗体:
单击“打开”按钮,弹出打开文件对话框:
选择一张图片,单击“打开”,可以看到在picBox上显示了打开的图片:
第五步:查看成生的控件文件,到该项目文件目录下的bin->debug中可找到。