- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道我的表单中是否有任何 ErrorProvider 处于事件状态。能够找到这个可能有助于减少我的代码..
我确实在这里找到了这个东西 Counting ErrorProvider
但以防万一有人知道更好的方法……所以这里开始吧。
好的,基本上我有一个 WinForm,它有很多文本框现在,当用户输入值时,我使用 Validating 来执行验证,如果它与 Regex 不匹配,我会为该控件设置 ErrorProvider ON。类似地,如果用户将值更改为可接受的值,我会为该控件关闭 ErrorProvider ..
但是当点击“保存”时,无论如何我必须再做一次检查,以防用户没有听我的话,按照他应该做的那样改变了东西,但仍然点击了“保存”..我不想让事情崩溃..
soo mm 有没有类似的东西我可以说如果 ErrorProviders 未激活然后继续保存其他消息框说更改它。
[另一个问题]
嗯,当验证时它只在控件失去焦点时验证...我有点希望它在用户停止输入时进行验证..我希望你明白我的意思
当用户输入他/她的名字时,就像电子邮件地址(文本框)一样,我[不]希望它进行验证,但是当用户完成输入时正在等待 ErrorProvider 消失(但它不会因为它仅在控件失去焦点时执行)输入后 2 奇数秒我可以进行验证吗?
最佳答案
不幸的是,ErrorProvider 控件不提供此类功能。您最好使用您发布的链接中的自定义错误提供程序类。
否则,您可以创建一个方法来代替 SetError
int errorCount;
void SetError(Control c, string message)
{
if (message == "")
errorCount--;
else
errorCount++;
errorProvider.SetError(c, message);
}
或者你可以制作一个 extension method对于 ErrorProvider 类,它将设置错误并增加一个计数器或类似的东西。
最后但同样重要的是,您可以遍历所有控件。慢,但它有效:
bool IsValid()
{
foreach (Control c in errorProvider1.ContainerControl.Controls)
if (errorProvider1.GetError(c) != "")
return false;
return true;
}
我已经为错误提供者编写了一个快速扩展类:
public static class ErrorProviderExtensions
{
private static int count;
public static void SetErrorWithCount(this ErrorProvider ep, Control c, string message)
{
if (message == "")
{
if (ep.GetError(c) != "")
count--;
}
else
count++;
ep.SetError(c, message);
}
public static bool HasErrors(this ErrorProvider ep)
{
return count != 0;
}
public static int GetErrorCount(this ErrorProvider ep)
{
return count;
}
}
我还没有对它进行广泛的测试,所以你可能想在你的 ErrorProvider
上调用 SetError
之前做更多的验证。
关于C# ErrorProvider 想知道是否有事件的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323044/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!