05. november 2004 - 00:27Der er
14 kommentarer og 1 løsning
Egen UserControl til IP
Hey fellow C#-fokes,
Jeg er ved at lave min egen UserControl til at indtaste en ip adresse.....
Jeg har fået lavet sådan at når man har tastet 3 tal skifter den automatisk til næste octec...
og skriver man over 255 laver den det til 255 :-), da alt over jo ikke er gyldig IP'er.
ting jeg mangler: At teste på om brugerens input er et tal, bare et hint til functions navn vil være nok, har ikke leget med sådan noget før?
dynamisk så jeg kun skal lave den her function en gang: private void oct_TextChanged(object sender, System.EventArgs e) { if(Convert.ToInt32(this.oct1.Text) > 255){ this.oct1.Text = "255"; } if(this.oct1.Text.Length > 2){ this.oct2.Focus(); } }
Som i kan se, hedder mine 4 felter til ip indtastning oct1, oct2, oct3 og oct4. Det ville jo være smart hvis jeg kunne bruge samme function, men hvornår får jeg navnet med ned i min fucntion, jeg skal jo også ved om det er den sidste octet den er ved, for hvis skal den jo ikke springe til næste kasse, etc. håber i kan forstå hvad det er jeg er ude efter, ellers må i jo spørge :-)
du sætter alle felter til at bruge den samme funktion ved TextChanged, i din event funktion har du et parameter der hedder object sender, dette er altid det object der sendte et event.
Jo, det ser jo meget godt ud, og tror jeg har fået svar på det hele, men mangler lige en ting.
Kan ikke lige helt gennemskue hans eksempel, da der er ok meget kode i hans. Men det ser da helt sikkert ud til at kunne nogle ting.
Spm: Kan jeg tage input fra keyboard, teste på det, hvis det er tal, skriv det, ellers return false, og så skal den ikke skrive noget i mit felt. Men ellers smid tallet ned i min boks, men kun hvis min usercontrol er selected. Så resten af programmet jo stadig kan få tal som input..... nogen hint?
ja, men det er ikke helt der mit problem er endnu, men nok nyttigt alligevel.
Hvis jeg skal skrive en ip adresse vil jeg jo ikke have at der kommer bogstaver ind, derfor må jeg vel sku teste på hvad det er inden jeg skriver det ned i min textbox, ved ikke lige hvordan det kan lade sig gøre. Da jeg ikke helt kan gennemskue det eksempel du sendte 12:44:13.
private void oct1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) { if(!char.IsNumber(e.KeyChar)) { e.Handled=true; } } giver følgende fejl: D:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\ComputerReg\ip.cs(168): 'System.Windows.Forms.KeyEventArgs' does not contain a definition for 'KeyChar'
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.