C# winform 显示编辑ip地址,无需重绘textBox或者重写textBox方法,只需要在原生textBox控件对应事件中实现对应的算法即可。


1、textBox keyUp事件

private void textBoxKeyUp(object sender, KeyEventArgs e)
{if (e.KeyCode == Keys.Back)return;String text = textBoxIP.Text;string[] subs = text.Split('.');bool update = false;int index = 0;foreach (var sub in subs){Debug.WriteLine($"Substring: {sub}");if(sub != String.Empty){if (Convert.ToUInt16(sub) > 255){subs[index] = "255";update = true;}}else{update = true;}if((subs.Length == (index+1)) &&(sub.Length >= 3)){update = true;}index++;}if (update){textBoxIP.Text = "";index = 0;foreach (var sub in subs){if (sub == String.Empty)continue;if(index < 3){textBoxIP.Text += String.Format("{0}.", sub);}else if (index == 3){textBoxIP.Text += String.Format("{0}", sub);}if(index >= 4){update = true;}index++;}textBoxIP.SelectionStart = textBoxIP.Text.Length;//设置光标在末尾   }
}

2、textBox click事件

private void textBoxClick(object sender, EventArgs e)
{String text = textBoxIP.Text;if (textBoxIP.SelectionStart >= text.Length)return;int offset_start = text.LastIndexOf('.', textBoxIP.SelectionStart, textBoxIP.SelectionStart);Debug.WriteLine("offset_start:{0}", offset_start);if (offset_start == -1){textBoxIP.SelectionStart = 0;}else{textBoxIP.SelectionStart = offset_start+1;}int offset_end  = text.IndexOf('.',textBoxIP.SelectionStart, textBoxIP.Text.Length- textBoxIP.SelectionStart);Debug.WriteLine("offset_end:{0}", offset_end);if(offset_end == -1){textBoxIP.SelectionLength = textBoxIP.Text.Length - textBoxIP.SelectionStart;}else{textBoxIP.SelectionLength = offset_end - textBoxIP.SelectionStart;}}

3、实现功能

a)自动补充'.'
b)限制大于255输入
c)点击自动选择

winform之ip地址控件textBox相关推荐

  1. vc中IP地址控件的使用

    CIPAddressCtrl类:提供了IP地址控件的功能 CIPAddressCtrl::ClearAddress 清除IP地址控件中的内容.void ClearAddress(); CIPAddre ...

  2. QT 实现自定义的IP地址控件

    此IP输入控件支持可通过tab,值大于255,点击.按钮,或者左右键切换等来实现切换输入框. 单个输入框功能,限制大小0-255: #ifndef CMYIPPARTLINEEDIT_H #defin ...

  3. VC MFC C++ IPControl CIPAddressCtrl IP输入控件使用

    直接通过控件ID获取控件指针来操作控件(不用声明变量) CIPAddressCtrl* mIPAddressCtrl_ServerIP = ((CIPAddressCtrl*)GetDlgItem(I ...

  4. c#在WinForm中重写ProgressBar控件(带%的显示)

    c#在WinForm中重写ProgressBar控件(带%的显示) 2009-05-14 13:13 #region 定义textProgressBar控件的类 namespace csPublish ...

  5. C# Winform 自定义 日程日历控件

    C# Winform 自定义 日程日历控件 下载地址: https://download.csdn.net/download/dilidida/33627515

  6. Winform实现在DataGridView控件的单元格中添加多个控件

    Winform实现在DataGridView控件的单元格中添加多个控件 背景 实现思路 关键代码 完整代码下载 背景 DataGridView控件的列是支持TextBoxColumn.ComboBox ...

  7. WPF显示经常使用的几个显示文字控件TextBox, TextBlock, Lable

    WPF显示经常使用的几个显示文字控件TextBox, TextBlock, Lable TextBox, TextBlock. Lable 当中TextBox 和Lable均继承了Control类 能 ...

  8. [转] WinForm实现移除控件某个事件的方法

    原文 WinForm实现移除控件某个事件的方法 本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下.具体功能代码如下: 主要功能部分代码如下: 1 2 3 4 5 6 7 8 ...

  9. 正则表达式——WPF输入控件TextBox 限定输入特定字符

    正则表达式--WPF输入控件TextBox 限定输入特定字符 原文:正则表达式--WPF输入控件TextBox 限定输入特定字符 概念: 正则表达式是对字符串操作的一种逻辑公式, 就是用事先定义好的一 ...

最新文章

  1. R语言使用ggpubr包的ggarrange函数组合多张结论图(水平并排组合)
  2. ActiveMQ学习笔记(8)——导入ActiveMQ源码到Eclipse
  3. JAVA_OA(五):SpringMVC接受传入页面的参数值
  4. 在linux下安装JDK
  5. C#中获取指定目录下所有目录的名称、全路径和创建日期
  6. BAT批处理代码快速打开注册表并定位到指定目录
  7. imread函数_MATLAB图像处理:27:使用imtranslate函数平移图像
  8. ExtJS 4 Beta 2预览:Ext.Brew包
  9. ubuntu16.04下wifi上网速度很慢的解决方案
  10. 第六章:react-router4
  11. weixin-api生成二维码
  12. Centos6.7 简单搭建dns服务器
  13. UVAlive3662 Another Minimum Spanning Tree 莫队算法
  14. Oracle的一些简单用法
  15. 【数据库查询--电影制片系列】--查询在st1公司于2018年制作的电影中出演的影星。
  16. Save Apply mechanism of luci
  17. 《一万小时理论》读书笔记
  18. 路径MTU(PMTU)发现控制与DF位
  19. python安装以后怎么打开_安装python后如何打开
  20. JavaWEB做一个美女网站

热门文章

  1. excel中同行多列数据的比较
  2. linux韩顺平2021
  3. java 艺术字_Java 添加Word艺术字
  4. C#开发WindowsForm程序Load事件未注册
  5. 锤子和学姐的故事——面对爱情,你的勇气有多大?
  6. JS正则表达式验证身份证号码、真实姓名
  7. Fn键的功能笔记本fn键在哪?
  8. python语音对话查询起始路和目的地_精选:语音对话机器人,百行Python代码就能轻松实现...
  9. 感恩坚持:来自ZStack社区老朋友们的视频寄语
  10. 弘辽科技:淘宝存在严重违规无法开店应该怎么办?