最近在写IP输入的判断逻辑,要实现IP控件的功能,首先要了解其功能。然后专门体验了一把系统自带输入ip的控件,主要逻辑有:
1.输入为0——255,(根据IP的实际分配情况,实际数字小于这个范围)
2.按字母键时,要接管系统对按键事件处理的响应。
3.按“."或者空格键,智能跳转到下一个IP输入框。
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
自己制作的结果:
参考此工程,http://code.google.com/p/ipaddresscontrollib/ 一个IP输入框为一个Panel控件,包含四个textBox和四个Label。textBox负责输入文本及逻辑处理,label仅显示“.”
输入处理主要处理按键的keyPress事件,判断输入的键值是否为数字,“.",“ ”,其他 四种情况。同时根据textBox已有的内容,判断输入的是否是0-255。
逻辑判断代码如下:
class="code_img_closed" src="/Upload/Images/2013090917/0015B68B3C38AA5B.gif" alt="" />逻辑判断panel的每个文本框调用上述方法(或者叫函数)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { ipJustify(textBox1, e); }
传入参数e,是为了判断是否接管系统的按键处理事件。默认情况下,函数处理完按键事件后,系统会调用默认按键处理事件。
e.handled=true; //接管
--------------------------------------------------------------------------------
不足之处:一个panel的四个文本框,不太灵活,扩展性不强。如果直接复制整个panel,则产生的textBox的序号会颠倒,求大神解。最好可以做个现成的控件,以后可以直接调用。
主要就是keyDown keyPress keyUp事件的判断处理。这方面,我用messageBox弹窗,发现事件发生的先后顺序为keyPress,keyDown,keyUp,跟网上的说法不一样。不知何故?