IP-Fenster

Polli

Mitglied
Hallo zusammen,

ich bin mal wieder da mit einer Frage.
Und zwar würde ich gern wissen:
Wenn ich in eine NumTextBox (es sind max 3 Zahlen zugelassen) eine IP-Adresse eingebe, soll der Cursor nach der 3. Zahl automatisch ins nächste Feld springen, außerdem soll kontrolliert werden ob die Zahl nicht größer als 255 ist. Wie programmiere ich das?

Ich weiß dass ich es im Internet mal gefunden habe, aber irgendwie habe ich keine Ahnung mehr wo es war...

Kann mir jemand einen Tipp geben, wie ich das mache?

LG Polli
 

Anhänge

  • IP.jpg
    IP.jpg
    3,2 KB · Aufrufe: 112

freakbrother

Mitglied
Beispielansatz:
Die 4 Textboxen in ein Panel, Tabindex aufsteigend zuweisen.
Wenn er drei Zahlen eingegeben hat Handler auslösen und die Zahl validieren -- > Methode mit Übergabeparametern welcher Bereich zulässig.
Bei Validate -- OK TextBox.GetNextControl Methode aufrufen.

Wenn nur 1 oder 2 Zahlen eingegeben muss er manuell weiter also Beispiel Keydown Event -- Tabtaste abfangen und dann eben wie oben beschrieben behandeln.
 

MCoder

Erfahrenes Mitglied
Für die Eingabe und Validierung von IP-Adressen gibt's ein fertiges Win32-Control. Dazu leitet man eine eigene Klasse von "TextBox" ab und überschreibt "CreateParams":
C#:
public class IPTextBox : TextBox
{
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ClassName = "SysIPAddress32";
            return cp;
        }
    }       
}
Gruß
MCoder
 

Polli

Mitglied
Wow...
Das ist super... Nach so etwas habe ich gesucht, aber komischer weise nicht gefunden, hätte mir viel Arbeit erspart...
Herzlichen Dank!
 

Shakie

Erfahrenes Mitglied
Ich wollte erst was von wegen MaskedTextBox antworten, aber als ich MCoders Lösung sah war ich begeistert :)
Allerdings funktionieren bei mir die Cursor-Tasten in der IPTextBox von MCoder nicht. Ist das bei euch auch so?
 

MCoder

Erfahrenes Mitglied
Ja stimmt, bei mir tun die Cursortasten auch nicht. Aber es gibt Abhilfe :D
Fügt doch noch folgende Methode in die Klasse mit ein:
C#:
protected override bool IsInputKey(Keys keyData)
{
    if( keyData == Keys.Left || keyData == Keys.Right )
    {
        return true;
    }
    else
    {     
        return base.IsInputKey(keyData);
    }
}
Gruß
MCoder