Hallo zusammen,
ich hatte mal gefragt wie man die IP-Adresse in einen Masked Text box einstellen kann. Ich habe mittlerweile eine meiner Meinung nach gute Lösung gefunden, die ich euch auch gern zeigen möchte. hoffe es könnte euch helfen 🙂
Anstatt einen Masked text Box benutze ich einen einfachen text box, und dazu Regular Expressions wie folgt:
private void txbRouter_TextChanged(object sender, EventArgs e)
{
var r = new Regex(@"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");
if (r.Match(txbRouter.Text).Success)
{
txbRouter.BackColor = Color.White;
}
else
{
txbRouter.BackColor = Color.PaleVioletRed;
}
}
man braucht nicht überheblich zu sein, wenn einfache frage auftauchen...
Grüße 🙂 👍
MFG
Parrain 🙂
Hallo parrain,
du könntest dazu auch eine eigenen TextBox erstellen, die das anbietet. Also von TextBox erben und dort die Prüfung einbauen. Dabei kannst du dich von [FAQ] In einer TextBox nur bestimmte Zeichen/Eingaben zulassen inspirieren lassen.
Statt dem if könntest du auch einfach:
txbRouter.BackColor = r.IsMatch(txtRouter.Text) ? Color.White : Color.PaleVioletRed;
verwenden, aber das ist eher Geschmackssache.
Lies dir auch Regex Static vs. Instance Methods durch.
Die so erstellte TextBox kannst du dann gerne in .NET-Komponenten und C#-Snippets veröffentlichen.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Geht auch sehr schön ohne selbst eine Regular Expression zu schreiben. Außerdem unterstützt deine Variante nur IPv4, und nicht v6
private void txbRouter_TextChanged(object sender, EventArgs e)
{
IPAddress address;
txbRouter.BackColor = IPAddress.TryParse(txtRouter.Text, out address) ? Color.White : Color.PaleVioletRed;
}