IP控件(功能跟电脑自带的一样,输入三位数后自动跳转,输入"."也会自动跳转)

来源:互联网 发布:淘宝商品上架 编辑:程序博客网 时间:2024/06/04 18:52

之前在网上寻找IP控件,查了好多都不尽人意,于是自己动手做一个吧,

1.创建自定义控件,在上面放4个方本框,3个label控件,


2.编写代码

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

namespace IPControl
{
public partial class IPaddressControl : UserControl
{
bool blInputOrGet = false;

//public delegate void TextChangedEventHandler(object sender, TextChangedEventArgs e);
//定义用户单击该控件的事件
public event EventHandler CClick;

public IPaddressControl()
{
InitializeComponent();
this.Size = new Size(122, 24);
}

private void IPaddressControl_Load(object sender, EventArgs e)
{

}

//获取完整的ip值,如"192.168.0.1"
public string GetIpAddress()
{
string ipValue = string.Empty;
ipValue = ipValue + txt1.Text.Trim() + ".";
ipValue = ipValue + txt2.Text.Trim() + ".";
ipValue = ipValue + txt3.Text.Trim() + ".";
ipValue = ipValue + txt4.Text.Trim();

return ipValue;
}
// 赋值ip给该控件,如"192.168.0.1"
public bool SetIpAddress(string ipValue)
{
txt1.Text = string.Empty;
txt2.Text = string.Empty;
txt3.Text = string.Empty;
txt4.Text = string.Empty;

//判断ip地址是否合法.
if (ipValue.Length < 7)
{
return false;
}

int index = 0;

for (int i = 0; i < 3; i++)
{
index = ipValue.IndexOf(".", index + 1);

if (index == -1)
{
return false;
}
}
//解析ip地址.
string[] ipValues = new string[4];

ipValues = ipValue.Split('.');
try
{
blInputOrGet = true;
txt1.Text = Convert.ToInt16(ipValues[0]).ToString();
txt2.Text = Convert.ToInt16(ipValues[1]).ToString();
txt3.Text = Convert.ToInt16(ipValues[2]).ToString();
txt4.Text = Convert.ToInt16(ipValues[3]).ToString();
}
catch
{
return false;
}
return true;
}


//处理和过滤用户按键
private void txtBox_KeyPress(object sender, KeyPressEventArgs e)
{
TextBox txtTemp = (TextBox)sender;

//该控件只能输入‘数字键’,‘.’,‘退格键’
if (e.KeyChar >= 48 && e.KeyChar <= 57) //‘数字键’
{
//正常处理
e.Handled = false;
}
else if ( e.KeyChar == 46) //‘.’键
{
////正常处理
//e.Handled = false;

//切换到下一个文本框
this.ProcessTabKey(true);
e.Handled = true;
}
else if (e.KeyChar == 8) //‘退格键’
{
//正常处理
e.Handled = false;
}
else //非法输入
{
//忽略输入
e.Handled = true;
}
}

//文本框内容改变,控制数字不能超过255
private void txtBox_TextChanged(object sender, EventArgs e)
{
TextBox txtTemp = (TextBox)sender;
string oldtxt = txtTemp.Text;

if (txtTemp.Text.Length <= 2) { return; } //长度<=2 正常

if (txtTemp.Text.Length == 4)          //长度等于4
{
txtTemp.Text = txtTemp.Text.Substring(0, 3);
//文本框长度超过3个时候,输入tab切换到下一个文本框
this.ProcessTabKey(true);
}
else if (txtTemp.Text.Length == 3)  //长度等于3
{
if (Convert.ToInt16(txtTemp.Text) > 255)
{
MessageBox.Show("最大值不能超过255!");

txtTemp.Text = "";
return;
}
}
}

//响应用户的事件CClick
private void txt1_Click(object sender, EventArgs e)
{
if (CClick != null)
{
CClick(sender, e);
}

}

}
}

好了,这就是全部的代码,有兴趣的朋友可以完全制作自己的IPControl控件了~

控件下载地址http://download.csdn.net/detail/xiaoyaofriend/4698528

原创粉丝点击