VB.Net中用户控件的使用

机房重构时,在界面的制作上有这样一个需要改进的地方。那就是在判断窗体上所有文本框时候为空的时候,弹出提示信息的问题。先看一下原先的代码:

<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:本文只是介绍了用户控件的简单应用,关于这一方面的知识还需要我们的大量探索。

时间: 2024-10-03 00:43:18

VB.Net中用户控件的使用的相关文章

vb.net: 一个用户控件,把它放在窗体中,当拖动它时,窗体也随之移动,这样这个窗体就不需要标题栏来拖动了

首先新建一个用户控件,这个控件中只有一个 label ,其名为: lblDrag,至于其所显示的文本和大小,可以随意设置. 接下来打开其代码界面,输入以下代码: -------------------------------------------------------------------------------------------------' 用户控件,当拖动这个控件时,该控件所属的窗体会被拖动Public Class uc_dagrLabelToMove Private isDr

VB.NET中DataGridView控件

VB.NET中对于表格数据的显示常用到DataGridView控件,其以丰富多样的数据表呈现形式被程序员喜爱. 本人在做一个小系统中运用DataGridView控件的部分属性,这些功能的使用在使用之初比较不易去理清,随着系统接近尾声,现在对一些运用进行整理回顾.控件的很多属性都是相通的,整理回顾,尽量让走的路在后面看起来不是更弯的. 一.如何刷新对DataGridView里面的数据进行增删改查之后的内容 具体实现: 在操作完成之后,再一次调用DataGridView1.DataSource = 

wpf创建用户控件(计时器控件)

在vs中新增用户控件 前台xaml如下代码: <UserControl x:Class="Zh.SelfServiceEquipment.UI.ZhControls.CountDownTimeControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml&qu

用户控件 WebUserControl .ascx

用户控件:WebUserControl   添加新项-用户控件 .ascx后缀,            派生.UserControl与页面的父类不是一个  是要嵌在页面里面使用 使用方法:直接设计页面拖到要放置的位置,出现以下两项 <%@ Register src="WUC.ascx" tagname="WUC" tagprefix="uc1" %> <uc1:WUC ID="WUC1" runat=&quo

Asp.net 恢复页面内用户控件内的控件ClientID

众所周知在Asp.net中如果一个页面添加了一个用户控件(或母版页),那么用户控件内的控件的   ClientID号会被自动添加页面中用户控件的ClientID 即页面中的控件内的控件ClientID=用户控件id号+"_"+用户控件内控件的id号 说的太绕了,还是看下例子吧 在一个asp.net页面index.aspx中添加了一个head.ascx用户控件id号为"head1" head.ascx控件中有一个input#hid_name控件 那么index.asp

在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件

在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑.在开发Winform各种类型项目,我都时不时需要定制一些特殊的用户控件,以方便在界面模块中反复使用.我们一般是在自定义的用户控件里面,添加各种各样的界面控件元素,或者封装一些特殊的函数处理共外部调用等.本篇随笔主要介绍基于DevExpress的Winform开发经验,介绍一个类似看板信息的用户控件,并在TabelLayout和S

基于VB中WINSOCK控件的网上象棋系统的实现

本文发表在<微型机与应用>杂志2001年第3期. 马根峰1   ,  孙艳2  , 王平1 (1.重庆邮电学院自动化学院,重庆,400065:2. 铁道部第十九工程局四处,内蒙 通辽,028000 )  摘要     本文首先介绍了Visual Basic中的WINSOCK控件的使用方法,然后深入探讨了网上象棋系统的设计思想及其实现过程. 关键词    WINSOCK控件:TCP:UDP 中图分类号: 文献标识码: 1      引言 MicrosoftVisual Basic 是可视化的.面

使用CefSharp 在C#用户控件中嵌入Chrome浏览器使用方法

CEF(Chromium Embedded Framework, 嵌入式Chromium框架)是C/C++开发的库 目前 Google Chrome(Google浏览器),Chromium浏览器,Opera等都是基于CEF为核心,Webkit引擎的浏览器. Xilium.CefGlue是对CEF项目的.net的包装,它是用P/Invoke的方式来调用CEF类库.CEFSharp是用C++/CLI的方式来调用CEF类库的. 原先使用的是Xilium.CefGlue,如果只是单纯在窗口上实现的话是没

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo