[原创]用户控件 IP文本框 VB.net

by Andy

的textbox 没有 mask 特地制作一个 以备使用。
源码打包 MyIPBox 附带实例。

 
Public Class IpBox Inherits System.Windows.Forms.UserControl #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'UserControl overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents Panel1 As System.Windows.Forms.Panel Friend WithEvents textBox3 As System.Windows.Forms.TextBox Friend WithEvents label3 As System.Windows.Forms.Label Friend WithEvents textBox4 As System.Windows.Forms.TextBox Friend WithEvents label1 As System.Windows.Forms.Label Friend WithEvents textBox1 As System.Windows.Forms.TextBox Friend WithEvents label2 As System.Windows.Forms.Label Friend WithEvents textBox2 As System.Windows.Forms.TextBox <system.diagnostics.debuggerstepthrough()> Private Sub InitializeComponent() Me.Panel1 = New System.Windows.Forms.Panel Me.textBox3 = New System.Windows.Forms.TextBox Me.label3 = New System.Windows.Forms.Label Me.textBox4 = New System.Windows.Forms.TextBox Me.label1 = New System.Windows.Forms.Label Me.textBox1 = New System.Windows.Forms.TextBox Me.label2 = New System.Windows.Forms.Label Me.textBox2 = New System.Windows.Forms.TextBox Me.Panel1.SuspendLayout() Me.SuspendLayout() ' 'Panel1 ' Me.Panel1.BackColor = System.Drawing.SystemColors.Window Me.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.Panel1.Controls.Add(Me.textBox3) Me.Panel1.Controls.Add(Me.label3) Me.Panel1.Controls.Add(Me.textBox4) Me.Panel1.Controls.Add(Me.label1) Me.Panel1.Controls.Add(Me.textBox1) Me.Panel1.Controls.Add(Me.label2) Me.Panel1.Controls.Add(Me.textBox2) Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Name = "Panel1" Me.Panel1.Size = New System.Drawing.Size(118, 18) Me.Panel1.TabIndex = 0 ' 'textBox3 ' Me.textBox3.BorderStyle = System.Windows.Forms.BorderStyle.None Me.textBox3.Location = New System.Drawing.Point(59, -1) Me.textBox3.Name = "textBox3" Me.textBox3.Size = New System.Drawing.Size(24, 14) Me.textBox3.TabIndex = 11 Me.textBox3.Text = "" Me.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center ' 'label3 ' Me.label3.BackColor = System.Drawing.Color.Transparent Me.label3.Font = New System.Drawing.Font("Arial", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.label3.Location = New System.Drawing.Point(83, 1) Me.label3.Name = "label3" Me.label3.Size = New System.Drawing.Size(4, 14) Me.label3.TabIndex = 12 Me.label3.Text = "." Me.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'textBox4 ' Me.textBox4.BorderStyle = System.Windows.Forms.BorderStyle.None Me.textBox4.Location = New System.Drawing.Point(87, -1) Me.textBox4.Name = "textBox4" Me.textBox4.Size = New System.Drawing.Size(24, 14) Me.textBox4.TabIndex = 13 Me.textBox4.Text = "" Me.textBox4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center ' 'label1 ' Me.label1.BackColor = System.Drawing.Color.Transparent Me.label1.Font = New System.Drawing.Font("Arial", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.label1.Location = New System.Drawing.Point(27, 3) Me.label1.Name = "label1" Me.label1.Size = New System.Drawing.Size(4, 10) Me.label1.TabIndex = 8 Me.label1.Text = "." Me.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'textBox1 ' Me.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None Me.textBox1.Location = New System.Drawing.Point(3, -1) Me.textBox1.Name = "textBox1" Me.textBox1.Size = New System.Drawing.Size(24, 14) Me.textBox1.TabIndex = 7 Me.textBox1.Text = "" Me.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center ' 'label2 ' Me.label2.BackColor = System.Drawing.Color.Transparent Me.label2.Font = New System.Drawing.Font("Arial", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.label2.Location = New System.Drawing.Point(55, 1) Me.label2.Name = "label2" Me.label2.Size = New System.Drawing.Size(4, 14) Me.label2.TabIndex = 10 Me.label2.Text = "." Me.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'textBox2 ' Me.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None Me.textBox2.Location = New System.Drawing.Point(31, -1) Me.textBox2.Name = "textBox2" Me.textBox2.Size = New System.Drawing.Size(24, 14) Me.textBox2.TabIndex = 9 Me.textBox2.Text = "" Me.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center ' 'IpBox ' Me.Controls.Add(Me.Panel1) Me.Name = "IpBox" Me.Size = New System.Drawing.Size(118, 18) Me.Panel1.ResumeLayout(False) Me.ResumeLayout(False)</system.diagnostics.debuggerstepthrough()> End Sub #End Region Public strIP As String Public Property IPAddress() As String Get strIP = "" strIP += IIf(textBox1.Text.Trim() <&gt; "", textBox1.Text.Trim(), "0") strIP += "." strIP += IIf(textBox2.Text.Trim() <&gt; "", textBox2.Text.Trim(), "0") strIP += "." strIP += IIf(textBox3.Text.Trim() <&gt; "", textBox3.Text.Trim(), "0") strIP += "." strIP += IIf(textBox4.Text.Trim() <&gt; "", textBox4.Text.Trim(), "0") Return strIP End Get Set(ByVal Value As String) strIP = Value Dim arrIP As String() = strIP.Split(".") If arrIP.Length &gt; 0 Then Try Value = Convert.ToInt32(arrIP(0).Trim) If Value < 0 Then textBox1.Text = "0" ElseIf Value &gt; "255" Then textBox1.Text = "255" Else textBox1.Text = Value.ToString End If Catch ex As Exception textBox1.Text = "0" Finally textBox1.Text = "0" End Try End If If arrIP.Length &gt; 1 Then Try Value = Convert.ToInt32(arrIP(1).Trim) If Value < 0 Then textBox2.Text = "0" ElseIf Value &gt; "255" Then textBox2.Text = "255" Else textBox2.Text = Value.ToString End If Catch ex As Exception textBox2.Text = "0" Finally textBox2.Text = "0" End Try End If If arrIP.Length &gt; 2 Then Try Value = Convert.ToInt32(arrIP(2).Trim) If Value < 0 Then textBox3.Text = "0" ElseIf Value &gt; "255" Then textBox3.Text = "255" Else textBox3.Text = Value.ToString End If Catch ex As Exception textBox3.Text = "0" Finally textBox3.Text = "0" End Try End If If arrIP.Length &gt; 3 Then Try Value = Convert.ToInt32(arrIP(3).Trim) If Value < 0 Then textBox4.Text = "0" ElseIf Value &gt; "255" Then textBox4.Text = "255" Else textBox4.Text = Value.ToString End If Catch ex As Exception textBox4.Text = "0" Finally textBox4.Text = "0" End Try End If End Set End Property Private Sub textBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles textBox1.TextChanged _ , textBox2.TextChanged _ , textBox3.TextChanged _ , textBox4.TextChanged If sender.Text.Trim <&gt; "" Then Dim val As Integer = Convert.ToInt32(sender.Text.Trim) If val < 0 Then sender.Text = "0" ElseIf val &gt; 255 Then sender.Text = "255" sender.SelectionStart = sender.TextLength End If End If End Sub Private Sub textBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox1.KeyDown If e.KeyCode = Keys.Right And textBox1.SelectionStart = textBox1.TextLength Then textBox2.Focus() textBox2.SelectAll() End If End Sub Private Sub textBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox2.KeyDown If textBox2.Text.Trim = "" And e.KeyCode = Keys.Back Then textBox1.Focus() textBox1.SelectionStart = textBox1.Text.Length End If If e.KeyCode = Keys.Right And textBox2.SelectionStart = textBox2.TextLength Then textBox3.Focus() textBox3.SelectAll() ElseIf e.KeyCode = Keys.Left And textBox2.SelectionStart = 0 Then textBox1.Focus() textBox1.SelectAll() End If End Sub Private Sub textBox3_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox3.KeyDown If textBox3.Text.Trim = "" And e.KeyCode = Keys.Back Then textBox2.Focus() textBox2.SelectionStart = textBox2.Text.Length End If If e.KeyCode = Keys.Right And textBox3.SelectionStart = textBox3.TextLength Then textBox4.Focus() textBox4.SelectAll() ElseIf e.KeyCode = Keys.Left And textBox3.SelectionStart = 0 Then textBox2.Focus() textBox2.SelectAll() End If End Sub Private Sub textBox4_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox4.KeyDown If textBox4.Text.Trim = "" And e.KeyCode = Keys.Back Then textBox3.Focus() textBox3.SelectionStart = textBox3.Text.Length End If If e.KeyCode = Keys.Left And textBox4.SelectionStart = 0 Then textBox3.Focus() textBox3.SelectAll() End If End Sub Private Sub textBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textBox1.KeyPress If Char.IsControl(e.KeyChar) Then Else If Not Char.IsDigit(e.KeyChar) Then e.Handled = True End If End If If e.KeyChar = "." Then textBox2.Focus() textBox2.SelectAll() End If End Sub Private Sub textBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textBox2.KeyPress If Char.IsControl(e.KeyChar) Then Else If Not Char.IsDigit(e.KeyChar) Then e.Handled = True End If End If If e.KeyChar = "." Then textBox3.Focus() textBox3.SelectAll() End If End Sub Private Sub textBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textBox3.KeyPress If Char.IsControl(e.KeyChar) Then Else If Not Char.IsDigit(e.KeyChar) Then e.Handled = True End If End If If e.KeyChar = "." Then textBox4.Focus() textBox4.SelectAll() End If End Sub Private Sub textBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textBox4.KeyPress If Char.IsControl(e.KeyChar) Then Else If Not Char.IsDigit(e.KeyChar) Then e.Handled = True End If End If End Sub Private Sub IpBox_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged Dim nTextBoxWidth As Integer = (Me.Width - 3 * label1.Width) / 4 textBox1.Location = New Point(0, 2) textBox1.Width = nTextBoxWidth textBox1.Height = Me.Height label1.Left = textBox1.Right label1.Top = 0 label1.Width = label1.Width label1.Height = Me.Height - 4 textBox2.Left = label1.Right textBox2.Top = 2 textBox2.Width = nTextBoxWidth textBox2.Height = Me.Height label2.Left = textBox2.Right label2.Top = 0 label2.Width = label1.Width label2.Height = Me.Height - 4 textBox3.Left = label2.Right textBox3.Top = 2 textBox3.Width = nTextBoxWidth textBox3.Height = Me.Height label3.Left = textBox3.Right label3.Top = 0 label3.Width = label1.Width label3.Height = Me.Height - 4 textBox4.Left = label3.Right textBox4.Top = 2 textBox4.Width = nTextBoxWidth textBox4.Height = Me.Height - 4 End Sub End Class

You may also like

Leave a Comment

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据