我正在寻找非常相似的东西。我发现在将更简单的正则表达式与 IPAddress.TryParse 结合使用时,我可以在文本框中使用已更改的文本和验证事件处理程序来确保输入了有效的 IP4。在以下示例中,文本框名称为 tbIPInput。一些字体装饰以帮助识别执行期间发生的事情。验证部分防止一个人退出文本框,直到输入一个有效的 IP。
private void tbIPInput_TextChanged(object sender, EventArgs e)
{
Regex regPattern = new Regex(@"\d+\.\d+\.\d+\.\d+");
if (regPattern.IsMatch(tbIPInput.Text) && IPAddress.TryParse(tbIPInput.Text, out IPAddress address))
{
//Valid IP is detected
tbIPInput.ForeColor = Color.Green;
tbIPInput.Font = new Font(tbIPInput.Font, FontStyle.Regular);
}
else
{
//Invalid IP entered so far
tbIPInput.ForeColor = Color.Red;
tbIPInput.Font = new Font(tbIPInput.Font, FontStyle.Italic);
}
}
private void tbIPInput_Validating(object sender, CancelEventArgs e)
{
Regex regPattern = new Regex(@"\d+\.\d+\.\d+\.\d+");
if (regPattern.IsMatch(tbIPInput.Text) && IPAddress.TryParse(tbIPInput.Text, out IPAddress address))
{
//Valid IP is detected
e.Cancel = false;
}
else
{
//Invalid IP entered so far do not allow focus to change
e.Cancel = true;
}
}