Validation Powershell表单IP地址文本框验证

Validation Powershell表单IP地址文本框验证,validation,powershell,textbox,Validation,Powershell,Textbox,我正在尝试通过使用Sapien Powershell Studio的Windows Powershell gui为IP地址输入(例如000.000.000.000)创建一个文本框 我查看了Maskedtextbox,但它的显示效果不太好(the),我无法限制输入的范围(最多255个) 我还研究了NumericUpDown,如果我可以隐藏箭头,这将是完美的,因为它使我能够限制范围并仅设置为数字 如果无法在输入上重新输入,我考虑只使用4个MaxLength=3的文本框和一个“TextChanged”

我正在尝试通过使用Sapien Powershell Studio的Windows Powershell gui为IP地址输入(例如000.000.000.000)创建一个文本框

我查看了Maskedtextbox,但它的显示效果不太好(the),我无法限制输入的范围(最多255个)

我还研究了NumericUpDown,如果我可以隐藏箭头,这将是完美的,因为它使我能够限制范围并仅设置为数字

如果无法在输入上重新输入,我考虑只使用4个MaxLength=3的文本框和一个“TextChanged”事件验证来擦除非数字或在范围内的文本


我忽略了一种更简单/更好的方法吗?

不要试图对文本框太过聪明,允许用户输入IP地址而不必摆弄向上/向下箭头等,让他们以自由形式输入。他们会为此感谢你的

然后,在提交表单或退出字段时,尝试通过以下操作解析IP地址:

$ip_address = $null
$a = [System.Net.IPAddress]::TryParse($ip_address_to_validate, [ref]$ip_address)
if ($ip_address -ne $null)
{
    # It's valid
}
else
{
    # Not valid - display an error message on form
}

就个人而言,我同意@Kev,但我使用正则表达式

$regip=[regex]"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
$regip.IsMatch("10.1.1.10")

干杯,同意。如果使用NumericUpDown,我想隐藏向上/向下箭头。我注意到文本框属性>数据>格式和高级绑定上有一个选项,它有“格式类型”,可以让我将格式类型设置为数字,但会变灰。知道如何更改/启用此设置吗?然后,我至少可以在输入端阻止字母字符,并对textchanged或exitting字段执行验证操作,以将输入的范围限制为255。我猜您可以使用KeyDown或KeyPress事件捕获这些字符。数据/绑定内容适用于使用数据绑定控件并希望格式化数据源中的字段值的情况例如SQL或Access(我做WinForms开发已经有一段时间了)。