MaskedTextBox中對IP信息輸入的處理

在VB.NET中,MaskedTextBox對於一些格式化的輸入非常有用,但是初次接觸到它,有時候讓人無所適從,比如這個控件用於IP地址輸入時,就會出現讓人頭痛的問題。

比如,在MaskedTextBox中定義IP地址的格式爲“000.000.000.000”後,滿以爲可以輕鬆搞定IP地址的輸入實際上卻不是那麼回事,這裏輸入字符串"192.168.0.103"到控件中顯示會是什麼樣呢?
“192.168.010.3__” !!

傻眼了吧。怎麼回事呢?當用“0”作爲掩碼的時候表示這個位置必須不可少,除非程序沒有填入。

好了,問題如何解決,如果用其他控件,感覺很麻煩,既然東西有了,如何把它用好也許更容易接受。

這裏寫出如下程序用於將輸入文本和數值進行處理:

Private Function getIPAddressMasked(ByRef vip() As Integer, ByVal strIP_in As String) As String
        Dim n As Integer
        Dim s As String
        Dim st As String

        st = strIP_in
        st = Replace(st, " ", "")
        n = InStr(st, ".")
        s = Mid(st, 1, n - 1)
        vip(0) = Val(s)
        st = Mid(st, n + 1)

        n = InStr(st, ".")
        s = Mid(st, 1, n - 1)
        vip(1) = Val(s)
        st = Mid(st, n + 1)

        n = InStr(st, ".")
        s = Mid(st, 1, n - 1)
        vip(2) = Val(s)
        st = Mid(st, n + 1)

        vip(3) = Val(st)


        st = ""
        s = Trim(Str(vip(0)))
        If Len(s) = 2 Then s = " " + s
        If Len(s) = 1 Then s = "  " + s
        st = st + s + "."
        s = Trim(Str(vip(1)))
        If Len(s) = 2 Then s = " " + s
        If Len(s) = 1 Then s = "  " + s
        st = st + s + "."
        s = Trim(Str(vip(2)))
        If Len(s) = 2 Then s = " " + s
        If Len(s) = 1 Then s = "  " + s
        st = st + s + "."
        s = Trim(Str(vip(3)))
        If Len(s) = 2 Then s = " " + s
        If Len(s) = 1 Then s = "  " + s
        st = st + s
        Return st
    End Function


    Private Sub cmdLink_Click(sender As Object, e As EventArgs) Handles cmdLink.Click
        Dim st As String
        Dim s As String
        Dim vip(4) As Integer
        Dim i As Integer
        st = mtbIP.Text
        s = getIPAddressMasked(vip, st) 
        mtbIP.Text = s
        st = ""
        For i = 0 To 3 
            s = Trim(Str(vip(i)))
            If (i <> 3) Then
                s = s + "."
            End If
            st = st + s
        Next
        MsgBox(st)
    End Sub
注意:MaskedTextBox的控件名字爲mtbIP,系統從控件中獲取到字符串後,將字符串送到getIPAddressMasked函數進行處理,處理後通過vip返回每個域的數值,通過函數返回用於MaskedTextBox能正常顯示的字符串,如果需要進一步用於其他處理,可以很簡單地轉換爲大家“喜聞樂見”的IP字符串標準格式,這裏用MsgBox直接 蹦 出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章