您的位置:首页 > 其它

【机房收费系统重构版】一键检查、清空控件text属性

2016-03-20 21:26 302 查看
【前言】

在米总的要求下,我们组开始了对VB版机房的升级重构,升级后功能基本不变,但是要求使用七层架构高度解耦能够灵活更换数据库,使用VB.net语言。在重构的过程中发现老版的VB机房系统中有很多的if textbox =”” then , if textbox=”” then。 我一看,这是典型的代码坏味道呀。有没有什么办法能够很轻松的把窗体中的控件遍历了呢?于是就有了这篇博客。

【正文】

【原理】

System.Windows.Forms.Control 类 代表任意控件

Typeof 函数 Typeof(textbox) 获取textbox的控件类型

编码的思路就是检测窗体中的每一个控件是否为空,或者判断控件类型执行相应操作

【代码】

检测是否所有text框不为空

<span style="font-size:24px;">Public Class CheckTXTExist
Dim ex As New Exception
Public Sub CheckTxtExist(ByVal form As Windows.Forms.Form) 'form为参数

Dim ct As Control         ' 定义ct为控件类
For Each ct In form.Controls   ' 循环窗体中的控件
If (TypeOf ct Is TextBox) Then  '如果控件为textbox
If ct.Text = "" Then        '如果该textbox.text="" 就抛出一个异常

Throw ex
Exit Sub

End If

End If
If (TypeOf ct Is ComboBox) Then ' 如果控件为combobox 且text 属性为空则抛出一个异常
If ct.Text = "" Then
Throw ex
Exit Sub
End If
End If
Next
End Sub
End Class</span>
窗体中调用:

<span style="font-size:24px;"> Dim check As New CheckTXTExist
Try<span style="white-space:pre">				    '利用异常处理程序抓捕由于控件text属性为空导致的程序异常。</span>
check.CheckTxtExist(Me)
Catch ex As Exception
MsgBox("请将信息补充完整")
Exit Sub

End Try</span>


清空窗体中所有的text

Public Class DeleteControlTXT

Public Sub DeleteControlTXT(ByVal form As Windows.Forms.Form) 'form为参数

Dim ct As Control         ' 定义ct为控件类
For Each ct In form.Controls   ' 循环窗体中的控件
If (TypeOf ct Is TextBox) Then  '如果控件为textbox 则清空text 属性
ct.Text = ""

End If

If (TypeOf ct Is ComboBox) Then ' 如果控件为combobox 则清空text属性
ct.Text = ""

End If
Next
End Sub
End Class


【总结】

不将就,你就有收获;不思考,你就会错过。聪明的你,更喜欢怎么做呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: