Eingabemaske für IP ?

Katerchen

Grünschnabel
ich suche ein Toolbox-element, welches dem Nutzer eine IP eingabe aufzwingt
(sowas wie ne Textbox mit Eingabenmaske)

gibt es sowas oder muss ich das selbst erstellen

habe schon mit maskedtextbox rumgespielt und die maske: 000/000/000/000 gewährt nicht gerade ne flexible eingabe

bzw. hat schonmal jemand so ne Eingabemaske selbst geschrieben?

windows benutzt sowas ja schließlich auch bei den netzwerkeinstellungen... sollte doch also nich soo schwer sein sowas zu *kopieren* (oder gar in VS bereit zu stellen)

(nutze c#)

danke
Kater
 
Zum einen kannst du ja mal bei CodeProject schauen, vielleicht gibt es da bereits eine fertige Lösung.

Oder, du machst es dir selbst :eek: Erstelle ein UserControl, platziere dort die vier Textboxen und implementiere die Logik die man für die korrekte Eingabe einer IP Adresse braucht, inkl. der Eigenschaften zum setzen und zum Auslesen der Adresse.
 
Hier mal ein kleines Beispiel:
Eine Textbox (tb_ipAdr), in die die IP eingetragen wird, wird nach Verlust des Fokuses gecheckt, ob die eingegebene Adresse gültig ist.


C#:
           /// <summary>
/// Überprüfung, ob es sich bei einem String um eine IP(v4)-Adresse handelt
/// </summary>
/// <remarks>
/// <list type="table">
///     <listheader>
///         <term>Fehler</term><term>Bedeutung</term>
///     </listheader>
///     <item>
///         <term>0x110</term>
///         <description>Adresse zu kurz (bezogen auf IPv6)</description>
///     </item>
///     <item>
///         <term>0x111</term>
///         <description>Adresse zu lang (bezogen auf IPv6)</description>
///     </item>
///     <item>
///         <term>0x100..0x106</term>
///         <description>An der n-ten (Rückgabewert - 0x100) Stelle ungültig</description>
///     </item>
/// </list>        
/// </remarks>
/// <param name="ip">String mit IP-Adresse</param>
/// <returns>0: kein Fehler | 0x100+Fehler: Fehlerfall
/// </returns>
public static int Check_ftpIP(string ip)
{
    int rueck = 0x100;
    int max = 4;
    string[] h = ip.Split('.');

    if (h.Length < 4 || h.Length == 5)
        return rueck + 0x10;
    else if (h.Length > 6)
        return rueck + 0x11;

    if (h.Length == 6)
        max = 6;
    for (int i = 0; i < max; i++)
        if (h[i].Length == 0 || int.Parse(h[i]) > 255 || int.Parse(h[i]) < 0)
            return rueck + i + 1;
    
    return 0;
}

///wurde mit Ereignis "Leave" der Textbox ipAdr verknüpft
private void tb_ipAdr_Leave(object sender, EventArgs e)
{
        int ausw = Check_ftpIP(tb_ipAdr.Text);
        if (ausw != 0)
        {
          //Fehlerfall auswerten
        }
        else
        {
            //"alles okay" auswerten
        }
}
 
Zurück