【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?
做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景。我们曾经是这样走来的:
第一版:
好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉用户,具体是哪一个控件,输入有误。
坏处:首先,界面看起来就很繁琐;其次,浪费了大量的手工工作,代码不具有可复用性;再次,编码的时候,如果控件数目比较多的话,容易忘记其中的某些控件。
If (Trim(txtCardID.Text) = "" then'判断卡号是否为空
If Trim(txtRechargeCash.Text) = "" Then '判断充值金额,是否为空
If Trim(txtStuID.Text) = "" Then '判断学号是否为空
If Trim(txtStuName.Text) = "" Then '判断学生姓名是否为空
If Trim(cmbSex.Text) = "" Then '判断性别是否为空 MsgBox("固定用户中,***不能为空!", , "友情提示")
Else
End If
Else
End If
Else
End If
Else
End If
Else
End If
第二版:
好处:代码界面看起来,美观整洁。
坏处:首先,弹出框的提示太笼统了,不够具体,没有良好的用户体验。当某控件输入为空时,看到弹出的提示,会感到莫名其妙,不知道具体是哪里错了。其次,代码不具有可复用性。再次,编码的时候,如果控件数目比较多的话,容易忘记其中的某些控件。
If (Trim(txtCardID.Text) = "" Or Trim(txtRechargeCash.Text) = "" Or Trim(txtStuID.Text) = "" Or Trim(txtStuName.Text) = "" Or Trim(cmbSex.Text) = "" Or Trim(txtDepartment.Text) = "" Or Trim(txtGrade.Text) = "" Or Trim(txtClass.Text) = "" Or Trim(cmbState.Text) = "") Then
MsgBox("固定用户中,输入信息不能为空!", , "友情提示")
Exit Sub
End If
第三版:
好处:首先,代码界面美观整洁。其次,弹出框的信息提示非常具体,明确的提示用户哪里出错了。再次,代码的封装,具有可复用性。把判断是否为空的函数,放在一个单独的类库中。然后,计算机自动帮您遍历界面中的所有控件,肯定不会拉掉其中的某些控件的。
坏处:计算机自动遍历界面中的所有控件,应该会很累的吧?不过,这少可以减轻程序猿的负担了。
Imports System.Windows.Forms '引用窗体中的控件 Public Shared Function IsAllEmpty(ByVal frm As Form) As Boolean '判断文本信息是否为空
Dim control As New Control
For Each ct1 As Control In frm.Controls '变量窗体中的所有控件
If ct1.GetType() Is GetType(TextBox) Then '判断控件类型是否为TextBox
If ct1.Text.Length = 0 Then '判断TextBox中信息是否为空,返回True或False
MsgBox(ct1.Tag + "不能为空!", , "友情提示")
ct1.Focus()
Return False '文本信息为空,返回False
Exit Function
Else
Return True '文本信息不为空,返回True
End If
End If
Next
End Function
调用的时候:
Dim isResultEmpty As Boolean
isResultEmpty = frmName.IsAllEmpty(Me)
If isResultEmpty = True Then '判断文本信息是否为空,为空返回False,不为空返回True
Else
End If
总结:学习的过程是循序渐进的,不要奢求一口吃个胖子。当你遇到一堆又一堆问题的时候,查询了很多的资料,发现自己更加头昏脑胀的时候。给你的建议是:先做一遍!无论对错,在做的过程中,对遇到的问题“逐一击破”!就像是给你一团乱糟糟的毛线,如果你实在是理不清头绪的话,就用剪刀随便找根线咔嚓一下,自己设定一个起始点就可以了。
【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?的更多相关文章
- C#递归遍历窗体所有textbox控件并设置textbox事件的方法
/// <summary> /// /// </summary> /// <param name="sender"></param> ...
- asp.net中遍历界面上所有控件进行属性设置
* 使用方法: * 前台页面调用方法,重置: protected void Reset_Click(object sender, EventArgs e) { ...
- C# 遍历所有的子控件和孙控件,包括容器中的,并批量操作和调用
这里要用两个知识,一个是递归,一个是队列. //定义一个Control类型的队列allCtrls private static Queue <Control> allCtrls = new ...
- tkinter学习系列(四)之Button 控件
目录 目录 前言 (一)基本用法和可选属性 ==1.基本用法== ==2.可选属性== (二)属性的具体实现和案例 ==1.常用属性== ==案例一== ==2.按钮里的图片== ==案例二== == ...
- delphi如何按照控件的左右顺序来遍历窗体中的每个控件 [问题点数:20 http://bbs.csdn.net/topics/380216822
delphi如何按照控件的左右顺序来遍历窗体中的每个控件delphi默认是按照控件添加进窗体的顺序来遍历的,有没有哪个属性能控制这个/?? 更多0分享到: 对我有用[0] 丢个板砖[0] 引用 | ...
- 基于VB中WINSOCK控件的网上象棋系统的实现
本文发表在<微型机与应用>杂志2001年第3期. 基于VB中WINSOCK控件的网上象棋系统的实现 马根峰1 , 孙艳2 , 王平1 (1.重庆邮电学院自动化学院,重庆,40006 ...
- 一步一步学Silverlight 2系列(9):使用控件模板
述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- WPF遍历当前容器中某种控件的方法
原文:WPF遍历当前容器中某种控件的方法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/79 ...
- WPF 遍历DataTemplate(获取所有控件)
原文:WPF 遍历DataTemplate(获取所有控件) 情况1:在设定DataTemplate的Name,并且他是在前台表示时,获取DataTemplate里的指定控件. 方法: http://b ...
随机推荐
- 2013长沙网络赛H题Hypersphere (蛋疼的题目 神似邀请赛A题)
Hypersphere Time Limit: 1 Second Memory Limit: 32768 KB In the world of k-dimension, there's a ...
- GridBagLayout练习
摘自http://blog.csdn.net/qq_18989901/article/details/52403737 GridBagLayout的用法 GridBagLayout是面板设计中最复杂 ...
- spark-submit
一旦用户的应用打包后,就可以使用bin/spark-submit脚本来启动,此脚本就会为Spark和它的依赖安排配置环境变量,还支持不同的集群管理和部署模式: ./bin/spark-submit \ ...
- LeetCode OJ平台上Maximum Subarray题目O(n)复杂度解决方式
原始题目例如以下,意为寻找数组和最大的子串,返回这个最大和就可以. Find the contiguous subarray within an array (containing at least ...
- bootstrap插件小记
1.模态框 除了通过data-toggle和data-target来控制模态弹出窗之外,Bootstrap框架针对模态弹出框还提供了其他自定义data-属性,来控制模态弹出窗.比如说:是否有灰色背景m ...
- 终极解法According to TLD or attribute directive in tag file, attribute select does not accept any expressions
3天硬是是把这个问题解决了 有时候突然上个厕所灵感就来了 第一次向用JSTL解析xml 然后我想遍历整个xml文档打印出来 居然不让我输入变量 那让我怎么办啊 在网上各种找答案 说什么<%@ t ...
- 检查DISPLAY设置时Xlib出现No protocol specified错误
退出到root用户,执行xhost +命令后,再次切换到Oralce用户,执行runInstaller命令,错误消失
- T - 阿牛的EOF牛肉串(第二季水)
Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的 ...
- 开启MongoDB 脚本和设置window自启
wwchen: D: cd D:\Program Files\MongoDB\Server\3.2\bin mongod --dbpath=D:\mongodb\db----------------- ...
- android 图片合成
package com.ebensz.eink.demo; import java.io.File; import java.io.FileOutputStream; import android.a ...