【机房系统知识小结点系列】之遍历窗体中的控件,判断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 ...
随机推荐
- Android学习总结——系统提示对话框(AlertDialog)
new AlertDialog.Builder(MainActivity.this).setTitle("退出")//设置对话框标题 .setMessage("官人可是要 ...
- module require区别
LUA modue require package 区别 2011-01-19 12:41:35| 分类: 默认分类 | 标签:lua package module require 加载 ...
- FFmpeg详解
认识FFMPEG FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式.多媒体传输协议以及音视频编解码器.因此,对于从事多媒体技术开发的工程师来说,深入研究FFM ...
- C# DES 加密解密
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...
- Sharepoint2010 通过 WebFeature 修改web.config
using System;using System.Runtime.InteropServices;using System.Security.Permissions;using Microsoft. ...
- [jquery] 图片热区随图片大小自由缩放
在图片上直接画出带超级链接热区元素map和area相信大家并不陌生,Dreamweaver等网页制作软件都有直接在图片上绘制带超级链接的热区工具,但是直接绘制的热区是不能随着图片自适应放大和缩小的,现 ...
- Spring-----6、Spring3.0提供的Java配置管理
转载自:http://blog.csdn.net/hekewangzi/article/details/45646279
- SpringMVC(一) —— 入门
SpringMVC原理图: 步骤: 首先用户发送请求.——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程 ...
- Android Fragment(碎片)的使用
简介 在Android中Fragment为一种可以嵌入活动中的UI片段.能让程序更加合理地利用大屏幕的空间. 使用方法 1.我们首先新建的一个onefragment.xml文件. <?xml v ...
- HttpWebRequest在GetResponse时总是超时
最近在通过RESTFUL接口来发布些数据,总是出现请求超时,好不容易找到个靠谱点的了,记下来,回去试下!! “ 问题就是我第一个HttpWebRequest在GetResponse之后,忘记将取得的W ...