C#实现IP地址控件

using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Drawing;
using  System.Data;
using  System.Windows.Forms;
using  System.Text.RegularExpressions;
namespace  IpAdd.Controls
{
public class IpBox : System.Windows.Forms.UserControl
{
  
private System.Windows.Forms.Panel panel1;
  
private System.Windows.Forms.TextBox textBox4;
  
private System.Windows.Forms.Label label3;
  
private System.Windows.Forms.TextBox textBox3;
  
private System.Windows.Forms.Label label2;
  
private System.Windows.Forms.TextBox textBox2;
  
private System.Windows.Forms.Label label1;
  
private System.Windows.Forms.TextBox textBox1;
  
private string _text = "";
  
/// <summary>
  
/// 必需的设计器变量。
  
/// </summary>

  private System.ComponentModel.Container components = null;
  
public IpBox()
  
{
   
// 该调用是 Windows.Forms 窗体设计器所必需的。
   InitializeComponent();
   
// TODO: 在 InitializeComponent 调用后添加任何初始化
  
  }

  
/// <summary>
  
/// 清理所有正在使用的资源。
  
/// </summary>

  protected override void Dispose( bool disposing )
  
{
   
if( disposing )
   
{
    
if(components != null)
    
{
     components.Dispose();
    }

   }

   
base.Dispose( disposing );
  }

  
组件设计器生成的代码
  
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
  
{
   
//System.Text.Encoding.GetEncoding(0).GetString();
  }

  
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  
{
   MaskIpAddr( textBox1, e );
  }

  
private void textBox2_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  
{
   MaskIpAddr( textBox2, e );
  }

  
private void textBox3_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  
{
   MaskIpAddr( textBox3, e );
  }

  
private void textBox4_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  
{
   MaskIpAddr( textBox4, e );
  }

  
private void MaskIpAddr( System.Windows.Forms.TextBox textBox, KeyPressEventArgs e)
  
{
   
int len = textBox.Text.Length;
   
if(Char.IsDigit(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == 8)
   
{
    
if (e.KeyChar != 8)
    
{
     
if(len == 2 && e.KeyChar != '.')
     
{
      
string tmp = textBox.Text + e.KeyChar;
      
if( textBox.Name == "textBox1" )
      
{
       
if(Int32.Parse(tmp)> 223// 进行验证
       {
        MessageBox.Show( tmp 
+ " 不是一个有效项目。请指定一个介于 1 和 223 之间的数值。");
        textBox.Text 
= "223";
        textBox.Focus();
        
return;
       }

       textBox2.Focus();
       textBox2.SelectAll();
      
      }

      
else if( textBox.Name == "textBox2" )
      
{
       
if(Int32.Parse(tmp)> 255)
       
{
        MessageBox.Show( tmp 
+ " 不是一个有效项目。请指定一个介于 1 和 255 之间的数值。");
        textBox.Text 
= "255";
        textBox.Focus();
        
return;
       }

       textBox3.Focus();
       textBox3.SelectAll();
      }

      
else if( textBox.Name == "textBox3" )
      
{
       
if(Int32.Parse(tmp)> 255)
       
{
        MessageBox.Show( tmp 
+ " 不是一个有效项目。请指定一个介于 1 和 255 之间的数值。");
        textBox.Text 
= "255";
        textBox.Focus();
        
return;
       }

       textBox4.Focus();
       textBox4.SelectAll();
      }

      
else if( textBox.Name == "textBox4" )
      
{
       
if(Int32.Parse(tmp)> 255)
       
{
        MessageBox.Show( tmp 
+ " 不是一个有效项目。请指定一个介于 1 和 255 之间的数值。");
        textBox.Text 
= "255";
        textBox.Focus();
        
return;
       }

      
      }

     
     }

     
if(e.KeyChar == '.')
     
{
       
if( textBox.Name == "textBox1" && textBox.Text != "" )
      
{
       textBox2.Focus();
       textBox2.SelectAll();
      }

      
if( textBox.Name == "textBox2" && textBox.Text != "" )
      
{
       textBox3.Focus();
       textBox3.SelectAll();
      }

      
if( textBox.Name == "textBox3" && textBox.Text != "" )
      
{
       textBox4.Focus();
       textBox4.SelectAll();
      }

      
if( textBox.Name == "textBox4" && textBox.Text != "" )
      
{
      
      }

      e.Handled 
= true;
     }

    }

    
else
    
{
     
if( textBox.Name == "textBox1" && textBox.Text == "")
     
{
     
     }

     
if( textBox.Name == "textBox2" && textBox.Text == "")
     
{
      textBox1.Focus();
      textBox1.SelectionStart 
= textBox1.Text.Length;
     }

     
if( textBox.Name == "textBox3" && textBox.Text == "")
     
{
      textBox2.Focus();
      textBox2.SelectionStart 
= textBox2.Text.Length;
     }

     
if( textBox.Name == "textBox4" && textBox.Text == "")
     
{
      textBox3.Focus();
      textBox3.SelectionStart 
= textBox3.Text.Length;
     }

     e.Handled 
= false;
    }

   }

   
else
    e.Handled 
= true;
  }


  [Browsable(
true)]
  
/// <summary>
  
/// 获取 IpBox 的文本。
  
/// </summary>

  public new string Text
  
{
   
get
   
{
    
if( textBox1.Text == ""
     
|| textBox2.Text == ""
     
|| textBox3.Text == ""
     
|| textBox4.Text == "")
    
{  
      _text 
= "";
     
return _text;
    }

    
else
    
{
     _text 
= Convert.ToInt32(textBox1.Text).ToString() + "." + Convert.ToInt32(textBox2.Text).ToString() + "." + Convert.ToInt32(textBox3.Text).ToString() + "." + Convert.ToInt32(textBox4.Text).ToString();
     
return _text;
    }

   
   }

  
/* set  //
   {
    if(value != null)
    {
     // 255-255-255-255
     //string pattern = @"^([1-9]|d{2}|1[0-9]{1,2}|2[0-5]{2}).(d{1,2}|1[0-9]{1,2}|[1-2][0-5]{2}).(d{1,2}|1[0-9]{1,2}|[1-2][0-5]{2}).(d{1,2}|1[0-9]{1,2}|[1-2][0-5]{2})$";
     // 223-255-255-255
     string pattern = @"^([1-9]|d{2}|1[0-9]{1,2}|2[1-2][1-3]).(d{1,2}|1[0-9]{1,2}|[1-2][0-5]{2}).(d{1,2}|1[0-9]{1,2}|[1-2][0-5]{2}).(d{1,2}|1[0-9]{1,2}|[1-2][0-5]{2})$";
     if( !Regex.IsMatch(value , pattern) )
     {
      _text = "";
      throw new Exception("IP 地址格式错误!");
     }
     else
     {
      string[] ipnum = value.Split('.');
      textBox1.Text = ipnum[0];
      textBox2.Text = ipnum[1];
      textBox3.Text = ipnum[2];
      textBox4.Text = ipnum[3];
     }
    }
    _text = value;
   }
  
*/

  
  }

}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值