最近在寫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。
邏輯判斷代碼如下:

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,跟網上的說法不一樣。不知何故?