VB.Net中用户控件的使用
2015-06-14 19:08
429 查看
机房重构时,在界面的制作上有这样一个需要改进的地方。那就是在判断窗体上所有文本框时候为空的时候,弹出提示信息的问题。先看一下原先的代码:
实现效果如下:
![](https://img-blog.csdn.net/20150614173007810)
功能是实现了,能弹出提示框,但是总觉得差强人意。大家可能注意到,弹出框中显示的是“不能为空”,那到底是哪个文本框不能为空呢?系统却没有做出明确的提示,这对于用户来说是不能接受的。界面是用户对我们系统的第一印象,如果我们做成上述的提示框,想一下用户会怎么评判这个系统。
出现上述的原因是文本框和标签是分开的,不能把标签和文本框对应起来。找到了问题的原因,那么解决起来就好办了。既然文本框和标签是分开,那让它们组合到一块儿不就OK了吗?这就涉及到今天要讲的内容—用户控件。
用户控件:
点击程序集—添加新建项—用户控件,这时在界面上会出现一个制作用户的界面,我们只需要把控件拖拽到界面中就完成我们想要的控件了。
![](https://img-blog.csdn.net/20150614184334677)
这个控件相当于是把标签和文本框组合成了一个控件,它包含了两者的属性和方法。我们把它添加到界面中,在稍微修改一下我们的代码:
Public Sub IsEmptyText(ByVal form As Form)
'遍历窗体中所有的用户控件
For Each txt As UserControl In form.Controls
If txt.TextBox1.Text = "" Then
MsgBox(txt.Label1.Text + "不能为空!")
End If
Next
End Sub 这样的话,再看一下我们的实现效果:
![](https://img-blog.csdn.net/20150614185621151)
当然了,这只是诸多实现方法的一种,还有一种方法就是设置文本框的Tag属性,在代码中获取这个属性也能达到这样的效果。对于用户控件,我觉得特别像VB中的一个控件—框架(GroupBox),作为一个容器将一些控件包含在内,唯一的区别就是用户控件可以复用。
总结:解决问题的方法有很多,每一种方法都有自己的优点和缺点,多尝试几种方法也许会有意想不到的收获。
小问题可映射出大智慧。
PS:本文只是介绍了用户控件的简单应用,关于这一方面的知识还需要我们的大量探索。
<pre name="code" class="vb"> Public Function IsEmptyText(ByVal objs As Form) As Boolean '遍历窗体中所有的控件 For i As Integer = objs.Controls.Count - 1 To 0 Step -1 '判断是否为文本框和组合框 If (TypeOf objs.Controls(i) Is TextBox) Or (TypeOf objs.Controls(i) Is ComboBox) Then '如果文本框和组合框的文本为控件 If objs.Controls(i).Text.Trim = "" Then '弹出文本框,给用户提示 MsgBox("不能为空", vbOKOnly + vbInformation, "系统提示!") objs.Controls(i).Focus() Return False Exit For End If End If Next Return True End Function<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
实现效果如下:
功能是实现了,能弹出提示框,但是总觉得差强人意。大家可能注意到,弹出框中显示的是“不能为空”,那到底是哪个文本框不能为空呢?系统却没有做出明确的提示,这对于用户来说是不能接受的。界面是用户对我们系统的第一印象,如果我们做成上述的提示框,想一下用户会怎么评判这个系统。
出现上述的原因是文本框和标签是分开的,不能把标签和文本框对应起来。找到了问题的原因,那么解决起来就好办了。既然文本框和标签是分开,那让它们组合到一块儿不就OK了吗?这就涉及到今天要讲的内容—用户控件。
用户控件:
点击程序集—添加新建项—用户控件,这时在界面上会出现一个制作用户的界面,我们只需要把控件拖拽到界面中就完成我们想要的控件了。
这个控件相当于是把标签和文本框组合成了一个控件,它包含了两者的属性和方法。我们把它添加到界面中,在稍微修改一下我们的代码:
Public Sub IsEmptyText(ByVal form As Form)
'遍历窗体中所有的用户控件
For Each txt As UserControl In form.Controls
If txt.TextBox1.Text = "" Then
MsgBox(txt.Label1.Text + "不能为空!")
End If
Next
End Sub 这样的话,再看一下我们的实现效果:
当然了,这只是诸多实现方法的一种,还有一种方法就是设置文本框的Tag属性,在代码中获取这个属性也能达到这样的效果。对于用户控件,我觉得特别像VB中的一个控件—框架(GroupBox),作为一个容器将一些控件包含在内,唯一的区别就是用户控件可以复用。
总结:解决问题的方法有很多,每一种方法都有自己的优点和缺点,多尝试几种方法也许会有意想不到的收获。
小问题可映射出大智慧。
PS:本文只是介绍了用户控件的简单应用,关于这一方面的知识还需要我们的大量探索。
相关文章推荐
- VB.NET 获取本机在局域网内的IP
- VBA类模块--创建Table类(1)
- Excel vba从excel中导出表格数据和图表到新word文档
- LCN 逻辑频道号(DVB)
- vbox端口转发
- vbox端口转发
- vbcrlf相关 及其 回车与换行的区别
- vbcrlf相关 及其 回车与换行的区别
- 如何使用Vbox添加虚拟机
- 【VB.NET机房重构】数据传递----实体、DataTable、泛型
- 【VB.NET机房重构】七层登录
- VBA选中离散的单元格
- VBS基础篇-----数据类型之间的转换
- OpenGL VBO顶点缓冲的使用
- 【VBScript】MsgBox()函数
- GT的使用及耗电量统计的原理,对GT采集的电池数据采用VBA分析
- Live555转发DVB实时流数据
- COM学习笔记2_COM接口vbtl内存布局
- [史上最全]C#(VB.NET)中位运算符工作过程剖析(译)
- IIS6常用的MIME类型[rmvb,mp3,zip,exe等文件]