MaskedTextBox中的IP地址?

Nas*_*ine 12 .net c# maskedtextbox

如何使用MaskedTextBox防止用户输入无效的IP地址?(我希望它的行为与Windows一样).

Kak*_*shi 17

试试这个:

IPAddress ipAddress;
if (IPAddress.TryParse(maskedTextBoxY.Text, out ipAddress))
{
    //valid ip
 }
else
 {
    //is not valid ip
}
Run Code Online (Sandbox Code Playgroud)

注意:要使用它,您需要导入System.Net命名空间:

using System.Net;
Run Code Online (Sandbox Code Playgroud)


Har*_*lse 16

比其他答案简单得多:

使用System.Net.IPAddress和System.Windows.Forms.MaskedTextBox

设置MaskedTextBox的以下属性:

MaskedTextBox.Mask = ###.###.###.###
MaskedTextBox.ValidatingType = typeof(System.Net.IPAddress);
Run Code Online (Sandbox Code Playgroud)

每当文本框验证时,都会引发事件MaskedTextBox.TypeValidationCompleted.事件参数显示以下内容:

  • 输入的文本是否可以作为IP地址接受?(= System.Net.IPAddress.TryParse返回ok)
  • 错误描述为字符串
  • 解析的值(= System.NET.IpAddress的对象
  • 解析值的类型.如果你有几个带有不同掩码的MaskedTextBox,则需要

收到此事件后,您可以决定是使用该值还是通知用户该值有什么问题.

  • 不起作用.仅适用于123.123.123.123 - 即所有出现的角色."123.4.5.6"的IP地址将显示为"123.456 .." (3认同)

Dan*_*Dan 5

最好使用 REGEX 来验证用户输入。下面是一个例子:

         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
Run Code Online (Sandbox Code Playgroud)