¿Cómo puedo usar MaskedTextBox para evitar que el usuario ingrese una dirección IP no válida? (Quiero que se comporte como el de Windows).Dirección IP en un MaskedTextBox?
Respuesta
Prueba esto:
IPAddress ipAddress;
if (IPAddress.TryParse(maskedTextBoxY.Text, out ipAddress))
{
//valid ip
}
else
{
//is not valid ip
}
nota: para usarlo , necesita importar el espacio de nombres System.Net
:
using System.Net;
Es mejor utilizar REGEX para validar la entrada del usuario. He aquí un ejemplo:
string pattern = @"\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";
string ip1 = "192.168.0.1";
string ip2 = "302.0.0.1";
Regex.IsMatch(ip1, pattern); // returns true
Regex.IsMatch(ip2, pattern); // returns false
y ahora tiene dos problemas ... – Woot4Moo
Um, ¿desde cuándo? Esto no responde la pregunta en absoluto. -1 – Ryan
@minitech - Creo que Woot4Moo se está refiriendo a esa antigua sierra sobre expresiones regulares - vea http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html –
Establecer la máscara para: ###.###.###.###
mostrará así:
y qué de IPv6? – Woot4Moo
@ Woot4Moo No creo que se pueda hacer con una sola máscara. Tendrá que escuchar la tecla presionada y manejar los caracteres que no están permitidos – Icarus
Correcto, MaskedTextBox no le permite hacer validaciones complejas directamente. Puede usar el evento KeyPress para leer la entrada del usuario y determinar que es válido. Y una expresión Regex correcta ayuda a hacer esta tarea. – Dan
mucho más simple que las otras respuestas:
Uso System.Net.IPAddress y System.Windows.Forms.MaskedTextBox
establezca las siguientes propiedades de la MaskedTextBox:
MaskedTextBox.Mask = ###.###.###.###
MaskedTextBox.ValidatingType = typeof(System.Net.IPAddress);
cada vez que se valida el cuadro de texto, se genera el evento MaskedTextBox.TypeValidationCompleted. Los argumentos del evento muestran lo siguiente:
- ¿El texto mecanografiado es aceptable como dirección IP? (= Hace System.Net.IPAddress.TryParse volver ok)
- descripción del error como una cadena
- El valor analizado (= un objeto de System.Net.IPAddress
- El tipo del valor analizado. Necesarias si tiene varios MaskedTextBoxes con diferentes máscaras
Tras la recepción de este evento se puede decidir si se debe utilizar el valor o notificar al usuario de lo que está mal con el valor.
NO funciona. Solo funciona para 123.123.123.123 - es decir, TODOS los caracteres están presentes. La dirección IP de "123.4.5.6" aparecerá como "123.456 .." –
Suscríbete al evento KeyDown y reacciona de la manera que quieras que sea la entrada si el operador presiona un punto/punto y coma/coma/flecha derecha/pestaña, etc. –
no hay una solución compleja para esta pregunta todavía. Creo que la respuesta de @HaraldDutch es la más cercana, pero es no prevet de entrada con carácter de espacio. Usando la instrucción adicional:
IPAdressBox.ResetOnSpace = false;
problema generaly resuelto, pero más complejo es poner en práctica los datos personalizados propios typewith método de análisis.
public class IPValidator
{
public static IPValidator Parse(string input)
{
Regex regexpr = new Regex(@" ");
Match match = regexpr.Match(input);
if (match.Success)
return new IPValidator();
else throw new ArgumentException(input);
}
}
Donde regexpr es expresión específica para validar IP. Después de que se puede utilizar como ValidatingType:
IPAdressBox.ValidatingType = typeof(IPValidator);
hice un cuadro de texto enmascarado IP que imita la de Windows uno.
Tiene el mismo ancho y alto, impide que los usuarios entren> 255 valores, saltos de cajas, etc., etc. Si todavía lo necesita y desea probarlo está aquí:
https://github.com/RuvenSalamon/IP-MaskedTextBox
(no sé si esto cuenta como la auto-promoción, pero es de código abierto por lo que supongo que está bien.)
- 1. Dirección IP en Silverlight
- 2. Dirección IP de sk_buff
- 3. Dirección IP inyección SQL
- 4. Buscar dirección IP en iphone
- 5. Geocodificar una dirección IP?
- 6. Generar dirección IP aleatoria
- 7. .Net Dirección IP IPv4
- 8. recortar dirección IP octeto
- 9. cURL dirección IP
- 10. dirección IP no enrutable
- 11. Convirtiendo un int a una dirección IP
- 12. ¿Cómo compararías la dirección IP?
- 13. Obtener mi dirección de IP
- 14. Permitir dirección IP sin autenticación
- 15. Obteniendo la dirección IP local
- 16. ¿Cómo obtener la dirección IP?
- 17. C# Dirección IP de cadena
- 18. TcpListener: Escuche en cada dirección, incluida la dirección IP GPRS
- 19. localhost vs dirección IP real
- 20. RegEx para una dirección IP
- 21. Ubicación por dirección IP en interiores
- 22. Analizando la dirección IP en .NET
- 23. Autenticar por dirección IP en Django
- 24. Dirección IP no obtenida en java
- 25. ¿Por qué recibo :: 1 como dirección IP en ASP.Net .. y cómo obtener la dirección IP correcta?
- 26. Cómo registrar la dirección IP en JBoss
- 27. ¿Detecta la dirección IP wifi en Android?
- 28. ¿Encontrar una dirección IP pública en Python?
- 29. Cómo validar una dirección IP en C#
- 30. Obtener la dirección IP 'externa' en Java
¿Por qué no solo lee el valor y le ahorra al usuario algunos problemas? Nunca haga que un usuario haga lo que puede hacer por ellos. – Woot4Moo