【发布时间】:2021-12-31 19:23:44
【问题描述】:
我正在尝试更改 Windowsform 中 errorProvider 的图标。我在 Properties->Resources 文件夹中添加了 .ico 文件。我试过直接复制粘贴 .ico 文件,也使用了 Add resources->Add Existing Files 选项。无论我做什么,如果我添加自己的 .ico 文件并尝试将它们设置为 errorProvider 图标,如下面的代码所示,我会在运行程序时遇到异常(特别是在尝试在我的程序中演示 errorProvider 功能时) .我的代码是:
private void textBox1_Leave(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(textBox1.Text))
{
textBox1.Focus();
errorProvider1.Icon = Properties.Resources.cross; //here I have change the default icon
errorProvider1.SetError(this.textBox1, "Input UserId"); //having exception in this line
}
else
{
errorProvider1.Icon = Properties.Resources.right;
}
}
异常详情:
System.StackOverflowException
HResult=0x800703E9
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
【问题讨论】:
-
尝试直接显示图标,独立于错误提供以消除未找到图标的原因。还要添加您看到的异常详细信息。
-
非常感谢。我看到我的一位老师更改了他计算机中的 errorProvider 图标,并且效果很好(尽管我使用了相同的方法)。我将使用异常详细信息编辑我的帖子。再次感谢
-
您为什么要首先尝试更改图标?该图标旨在突出显示有错误的框,并在验证失败时显示。通常验证发生在您提交表单时,但您也可以在控件失去焦点时触发它。这就是你试图通过处理
Leave来做的吗? -
至于异常本身,通常在您的代码导致无限递归时引发。也许你的代码一遍又一遍地触发
Leave -
或者您是否尝试将 ErrorProvider 用作通用状态 UI?它不是。这个名字说明了一切——它是一个 ErrorProvider。
标签: c# visual-studio windows-forms-designer .net-framework-4.8 errorprovider