5.4.2 定义用户自定义控件
本案例程序需要定义一个用户自定义控件来提高程序的效率。用户自定义控件是在VB提供的基本控件基础上,允许用户再增加自己定义的功能;使用自定义控件的好处是除了该控件具备基本控件的功能外,可以增加用户自己设定的新的功能。
本案例我们来定义一个基于TextBox控件的新的用户自定义控件。具体方法如下:
在“工程资源管理器”中右击鼠标,选择“添加”→“添加用户控件(U)”(见图5-13),在弹出的对话框中选择“用户控件”后,点击“打开”按钮,就会出现一个新的不带任何边框的窗体,将此窗体的名称属性修改为“ctlTextBox”,这个名称就是我们新定义的用户控件类型名,后面我们就可以定义“ctlTextBox”类型的控件实体了。
从工具箱中拖一个TextBox控件到这个设计窗体中,名称采用默认的Text1,将Text1控件的Text属性默认值清空。进入代码窗体,按“代码5-5”所示编写该窗体代码后,点击保存项目按钮,按照提示保存,在工具箱中我们会发现多了一个新的用户自定义控件的图
图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
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。