首页 百科知识 定义用户自定义控件

定义用户自定义控件

时间:2022-10-21 百科知识 版权反馈
【摘要】:本案例程序需要定义一个用户自定义控件来提高程序的效率。用户自定义控件是在VB提供的基本控件基础上,允许用户再增加自己定义的功能;使用自定义控件的好处是除了该控件具备基本控件的功能外,可以增加用户自己设定的新的功能。从工具箱中拖一个TextBox控件到这个设计窗体中,名称采用默认的Text1,将Text1控件的Text属性默认值清空。

5.4.2 定义用户自定义控件

本案例程序需要定义一个用户自定义控件来提高程序的效率。用户自定义控件是在VB提供的基本控件基础上,允许用户再增加自己定义的功能;使用自定义控件的好处是除了该控件具备基本控件的功能外,可以增加用户自己设定的新的功能。

本案例我们来定义一个基于TextBox控件的新的用户自定义控件。具体方法如下:

在“工程资源管理器”中右击鼠标,选择“添加”→“添加用户控件(U)”(见图5-13),在弹出的对话框中选择“用户控件”后,点击“打开”按钮,就会出现一个新的不带任何边框的窗体,将此窗体的名称属性修改为“ctlTextBox”,这个名称就是我们新定义的用户控件类型名,后面我们就可以定义“ctlTextBox”类型的控件实体了。

从工具箱中拖一个TextBox控件到这个设计窗体中,名称采用默认的Text1,将Text1控件的Text属性默认值清空。进入代码窗体,按“代码5-5”所示编写该窗体代码后,点击保存项目按钮,按照提示保存,在工具箱中我们会发现多了一个新的用户自定义控件的图

img42

图5-13 添加用户定义控件

标,这样,这个基于TextBox控件的自定义控件就设置完成了。

代码5-5 用户自定义控件ctlTextBox代码

′****************************************************************************

Dim charAccept As Integer

′charAccept如果被设置为

′0-任何字符

′1-只有数字

′2-只有字符

Public Property Get charType()As Integer ′Get过程声明

  charType=charAccept

End Property

Public Property Let charType(ByVal vNewVal As Integer) ′Let过程声明

  charAccept=vNewVal

End Property

Private Sub usercontrol_readproperties(propbag As PropertyBag) ′从存储器中加载属性值

  charType=propbag.ReadProperty(″charType″,0)

End Sub

Private Sub usercontrol_writeproperties(propbag As PropertyBag)

′将属性值写到存储器(工程项目)

  propbag.WriteProperty″charType″,charAccept,0

End Sub

′######################################################

′定义文本框样式

′######################################################

Private Sub Text1_GotFocus() ′获取焦点效果

  Text1.BackColor=vbYellow

  Text1.ForeColor=vbBlue

End Sub

Private Sub Text1_LostFocus()′失去焦点效果

  Text1.BackColor=vbWhite

  Text1.ForeColor=vbBlack

End Sub

′用户输入数据的效果设置

Private Sub Text1_KeyPress(KeyAscii As Integer)

  If KeyAscii=vbKeyBack Then ′vbKeyBack代表退格(Backspace)键

     Exit Sub

  End If

  Select Case charAccept

    Case 0 ′任意字符

      Exit Sub

  Case 1 ′仅仅是数值

     If(KeyAscii>=48And KeyAscii<=57)Then

       Exit Sub

     Else

       KeyAscii=0

       Beep

       MsgBox″无效数据!″,vbExclamation,″数据错误!″

     End If

  Case 2 ′仅仅是字符

    If(KeyAscii>=65And KeyAscii<=90)Then

      Exit Sub

    ElseIf(KeyAscii>=97And KeyAscii<=122)Then

      Exit Sub

    Else

      KeyAscii=0

      Beep

      MsgBox″无效数据!″,vbExclamation,″数据错误!″

    End If

  End Select

End Sub

′######################################################

′用户定义的控件大小按用户自己的设置调整

′######################################################

Private Sub UserControl_Resize()

  Text1.Height=UserControl.ScaleHeight

  Text1.Width=UserControl.ScaleWidth

End Sub

′######################################################

′设置TextBox的TEXT属性

′######################################################

Public Property Get Text()As String

  Text=Text1.Text

End Property

Public Property Let Text(ByVal New_Text As String)

    Text1.Text()=New_Text

    PropertyChanged″Text″

End Property

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈