1. 程式人生 > >VB.Net中使用者控制元件的使用

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:本文只是介紹了使用者控制元件的簡單應用,關於這一方面的知識還需要我們的大量探索。