VB.Net文字框提示及一次性清空
阿新 • • 發佈:2019-02-01
【前言】
第二次基礎機房收費系統,在很多系統優化方面有了更多的認識,對於窗體中文字框內容是否為空的提示以及一次性清空其內容,這些在第一次的機房收費系統中進行了嘗試,在這次的機房收費系統個人重構的過程中,再次產生了這一方面的需求,如何減少程式碼的重複率,於是對該方面進行了探究。
【具體操作】
操作一:
對於判斷窗體中文字框是否為空以及一次性清空文字框內容這一問題,我們需要在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>
【學習感悟】
就像米老師跟我們說過:從此,我們要開始不將就。有不滿意的部分,就需要我們去改變,做到更好。這個過程需要我們積極地去探索,最怕的就是“就這樣吧”、“湊活吧”、“差不多就行了”,因為一旦有了這樣的心理,我們很難再有新的發現。在機房重構的過程中,自己想到了如何解決文字框的問題,在網上找了一點資料後沒有找到想要的內容,想要去找別的同學尋求幫助的時候,碩碩和宋榮凱對我說:網上有很多該方面的資料,自己找找看。很感謝他們給我一個自己探索的機會,正是在這樣的情況下,才產生了意想不到的收穫!