WinForm IP地址输入框控件实现

本文实例为大家分享了WinForm IP地址输入框控件的具体实现代码,供大家参考,具体内容如下

IPInput.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace IPInputControl.Ctrl
{
 public partial class IPInput : UserControl
 {
 public IPInput()
 {
  InitializeComponent();
 }
 TextBox ParentTxt;
 private void IPInput_Load(object sender, EventArgs e)
 {
  ParentTxt = txt_1;
 }
 public void txt_KeyDown(object sender, KeyEventArgs e)
 {
  ParentTxt = (TextBox)sender;
  if (e.KeyCode == Keys.Left)
  {
  switch (ParentTxt.Name.Split('_')[1])
  {
   case "1":
   break;
   case "2":
   if (ParentTxt.SelectionStart == 0 && ParentTxt.Text != "")
   {
    if (int.Parse(ParentTxt.Text) > 255)
    {
    MessageBox.Show(ParentTxt.Text + "不是有效项。

请指定一个介于1和255之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); ParentTxt.Text = "255"; ParentTxt.SelectionStart = 0; } else { txt_1.Focus(); } } else if (ParentTxt.Text == "") { txt_1.Focus(); } break; case "3": if (ParentTxt.SelectionStart == 0 && ParentTxt.Text != "") { if (int.Parse(ParentTxt.Text) > 255) { MessageBox.Show(ParentTxt.Text + "不是有效项。

请指定一个介于1和255之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); ParentTxt.Text = "255"; ParentTxt.SelectionStart = 0; } else { txt_2.Focus(); } } else if (ParentTxt.Text == "") { txt_2.Focus(); } break; case "4": if (ParentTxt.SelectionStart == 0 && ParentTxt.Text != "") { if (int.Parse(ParentTxt.Text) > 255) { MessageBox.Show(ParentTxt.Text + "不是有效项。

请指定一个介于1和255之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); ParentTxt.Text = "255"; ParentTxt.SelectionStart = 0; } else { txt_3.Focus(); } } else if (ParentTxt.Text == "") { txt_3.Focus(); } break; } } else if (e.KeyCode == Keys.Right) { switch (ParentTxt.Name.Split('_')[1]) { case "1": if (ParentTxt.SelectionStart == ParentTxt.Text.Length && ParentTxt.Text != "") { if (int.Parse(ParentTxt.Text) > 223) { MessageBox.Show(ParentTxt.Text + "不是有效项。

请指定一个介于1和223之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); ParentTxt.Text = "223"; ParentTxt.SelectionStart = ParentTxt.Text.Length; } else { txt_2.Focus(); } } else if (ParentTxt.Text == "") { txt_2.Focus(); } break; case "2": if (ParentTxt.SelectionStart == ParentTxt.Text.Length && ParentTxt.Text != "") { if (int.Parse(ParentTxt.Text) > 255) { MessageBox.Show(ParentTxt.Text + "不是有效项。

请指定一个介于1和255之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); ParentTxt.Text = "255"; ParentTxt.SelectionStart = ParentTxt.Text.Length; } else { txt_3.Focus(); } } else if (ParentTxt.Text == "") { txt_3.Focus(); } break; case "3": if (ParentTxt.SelectionStart == ParentTxt.Text.Length && ParentTxt.Text != "") { if (int.Parse(ParentTxt.Text) > 255) { MessageBox.Show(ParentTxt.Text + "不是有效项。

请指定一个介于1和255之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); ParentTxt.Text = "255"; ParentTxt.SelectionStart = ParentTxt.Text.Length; } else { txt_4.Focus(); } } else if (ParentTxt.Text == "") { txt_4.Focus(); } break; case "4": break; } } } public void txt_KeyPress(object sender, KeyPressEventArgs e) { ParentTxt = (TextBox)sender; Regex regex = new Regex(@"^[0-9]+$"); if (!regex.IsMatch(e.KeyChar.ToString()) && e.KeyChar != (Char)Keys.Back) { e.Handled = true; } else if (e.KeyChar == (Char)Keys.Back) { e.Handled = false; switch (ParentTxt.Name.Split('_')[1]) { case "1": break; case "2": if (ParentTxt.SelectionStart == 0) { txt_1.Focus(); if (txt_1.Text != "") { txt_1.Text = txt_1.Text.Substring(0, txt_1.Text.Length - 1); } txt_1.SelectionStart = txt_1.Text.Length; } break; case "3": if (ParentTxt.SelectionStart == 0) { txt_2.Focus(); if (txt_2.Text != "") { txt_2.Text = txt_2.Text.Substring(0, txt_2.Text.Length - 1); } txt_2.SelectionStart = txt_2.Text.Length; } break; case "4": if (ParentTxt.SelectionStart == 0) { txt_3.Focus(); if (txt_3.Text != "") { txt_3.Text = txt_3.Text.Substring(0, txt_3.Text.Length - 1); } txt_3.SelectionStart = txt_3.Text.Length; } break; } } else { switch (ParentTxt.Name.Split('_')[1]) { case "1": if (ParentTxt.SelectionStart == ParentTxt.Text.Length) { if (int.Parse(ParentTxt.Text + e.KeyChar.ToString()) > 223) { MessageBox.Show(ParentTxt.Text + e.KeyChar.ToString() + "不是有效项。

请指定一个介于1和223之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); e.Handled = true; ParentTxt.Text = "223"; } else { e.Handled = false; } } else if(ParentTxt.Text.Length != 3) { e.Handled = false; } else { e.Handled = true; } break; default: if (ParentTxt.SelectionStart == ParentTxt.Text.Length) { if (int.Parse(ParentTxt.Text + e.KeyChar.ToString()) > 255) { MessageBox.Show(ParentTxt.Text + e.KeyChar.ToString() + "不是有效项。

请指定一个介于1和255之间的值。

", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); e.Handled = true; ParentTxt.Text = "255"; } else { e.Handled = false; } } else if (ParentTxt.Text.Length != 3) { e.Handled = false; } else { e.Handled = true; } break; } } } public void txt_TextChanged(object sender, EventArgs e) { if (ParentTxt.Text.Length == 3) { switch (ParentTxt.Name.Split('_')[1]) { case "1": if (ParentTxt.SelectionStart == ParentTxt.Text.Length) { txt_2.Focus(); } break; case "2": if (ParentTxt.SelectionStart == ParentTxt.Text.Length) { txt_3.Focus(); } break; case "3": if (ParentTxt.SelectionStart == ParentTxt.Text.Length) { txt_4.Focus(); } break; case "4": break; } } } } }

ControlText.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace IPInputControl.Ctrl
{
 public partial class ControlText : TextBox
 {
 public ControlText()
 {
  InitializeComponent();
 }
 public void txt_TextChange(object sender, EventArgs e)
 {
  if (this.Text.Length == 3)
  {
  SendKeys.Send("{TAB}");
  }
 }
 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
 {
  if (keyData == Keys.Tab)
  {
  return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
 }
 }
}

更多完整代码请点击下载:WinForm IP地址输入框控件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

0.234921s