1. 程式人生 > >VB.Net文字框提示及一次性清空

VB.Net文字框提示及一次性清空

【前言】

     第二次基礎機房收費系統,在很多系統優化方面有了更多的認識,對於窗體中文字框內容是否為空的提示以及一次性清空其內容,這些在第一次的機房收費系統中進行了嘗試,在這次的機房收費系統個人重構的過程中,再次產生了這一方面的需求,如何減少程式碼的重複率,於是對該方面進行了探究。

【具體操作】

 操作一:

     對於判斷窗體中文字框是否為空以及一次性清空文字框內容這一問題,我們需要在UI層中建一個公共類,將相應的定義與函式寫在該類中。

                                                                   

操作二:

     1、
在新建的公共類TextModel中宣告公共內容部分

<span style="font-size:18px;">Imports System.Windows.Forms.Control
Imports System.Object
Public Class TextModel

    '定義一個結構體Term
    Public Structure Term
        Dim controlSub As System.Windows.Forms.Control
        Dim strText As String
        Sub New(ByVal controlSub As System.Windows.Forms.Control, ByVal strText As String)
            With Me
                .controlSub = controlSub
                .strText = strText
            End With
        End Sub
    End Structure

    '用結構體定義一個Term型別陣列
    Public Shared arrayControl() As Term</span>

     2、判斷文字框中內容是否為空

     (1)在公共類中TextModel類中寫入相應的函式

<span style="font-size:18px;"> '判斷文字框是否為空的函式
    Public Shared Function CIsEmpty(ByVal ArrayControl() As Term) As Boolean

        '定義一個term變數
        Dim termControl As Term

        '遍歷結構體陣列中所有的元素, 如果文字框為空, 則進行相應的提示
        For Each termControl In ArrayControl

            If TypeOf termControl.controlSub Is System.Windows.Forms.TextBox Then
                If termControl.controlSub.Text.Trim = "" Then
                    Windows.Forms.MessageBox.Show(termControl.strText & "不能為空", "提醒", Windows.Forms.MessageBoxButtons.OK, Windows.Forms.MessageBoxIcon.Exclamation)
                    termControl.controlSub.Focus()
                    Return True
                    Exit Function
                End If
            End If

        Next
    End Function</span>

      (2)在實際窗體中,例如在frmOnlineRecord窗體中判斷文字框中內容是否為空
<span style="font-size:18px;">Public Class frmOnlineRecord

    '對定義的結構體進行初始化處理,定義一個過程Rdim(),來完成該功能
    Private Sub Rdim()
        ReDim Preserve TextModel.arrayControl(1)

        TextModel.arrayControl(0) = New TextModel.Term(txtCardID, "卡號")
    End Sub

    Private Sub btnInquire_Click(sender As Object, e As EventArgs) Handles btnInquire.Click

        '呼叫Rdim過程進行陣列初始化
        Call Rdim()
        If TextModel.CIsEmpty(TextModel.arrayControl) = True Then
            Exit Sub
        End If
   
   End Sub

End Class</span>

    3、一次性清除文字框中的內容

  (1)在公共類TextModel中寫入相應的函式

<span style="font-size:18px;"> '設定對文字框一鍵清除
    Public Shared Function AllEmpty(ByVal arraycontrol() As Term) As Boolean
        Dim termControl As Term

        For Each termControl In arraycontrol
            If TypeOf termControl.controlSub Is Windows.Forms.TextBox Then
                termControl.controlSub.Text = ""

            End If
        Next
        Return True
    End Function</span>

   (2)在對應窗體中呼叫AllEmpty函式,實現一次性清除文字框中的內容
<span style="font-size:18px;"> Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Hide()

        '呼叫Rdim(過程及AllEmpty函式)
        Call Rdim()
        If TextModel.AllEmpty(TextModel.arrayControl) Then
            Exit Sub
        End If
    End Sub</span>

【學習感悟】

     就像米老師跟我們說過:從此,我們要開始不將就。有不滿意的部分,就需要我們去改變,做到更好。這個過程需要我們積極地去探索,最怕的就是“就這樣吧”、“湊活吧”、“差不多就行了”,因為一旦有了這樣的心理,我們很難再有新的發現。在機房重構的過程中,自己想到了如何解決文字框的問題,在網上找了一點資料後沒有找到想要的內容,想要去找別的同學尋求幫助的時候,碩碩和宋榮凱對我說:網上有很多該方面的資料,自己找找看。很感謝他們給我一個自己探索的機會,正是在這樣的情況下,才產生了意想不到的收穫!