更改 ErrorProvider 的图标会出现异常
Changing the icon of ErrorProvider gives exception
我正在尝试更改 Windowsform 中 errorProvider 的图标。我在 Properties->Resources 文件夹中添加了 .ico 文件。我试过直接复制粘贴 .ico 文件,也使用了添加资源-> 添加现有文件选项。无论我做什么,如果我添加自己的 .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.WhosebugException
HResult=0x800703E9
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
首先将你的 ico 文件添加到资源并将“复制到输出目录”设置为始终复制
Copy to Outpot Directory Example
private void textBox1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text.Trim() == "")
{
errorProvider1.SetError(textBox1, "ERROR WARNING");
errorProvider1.Icon = new Icon(@"Resources\termicon.ico");
}
}
Example
通过Resource.resx
添加资源也可以很好的引用ico。 Copy if new
是另一种调用方式。
添加现有资源:
最好将 leave
事件更改为 Validating
事件。
我自己测试了你的代码,没有问题。
我这里有 reproduced the error
因为它是由 ico file itself
.
引起的
换个图就可以解决
private void TextBox1_Validating(object sender, CancelEventArgs e) {
if(string.IsNullOrEmpty(textBox1.Text)) {
textBox1.Focus();
errorProvider1.Icon=Properties.Resources.error__3_; //here I have change the default icon
errorProvider1.SetError(textBox1, "Input UserId"); //having exception in this line
} else {
errorProvider1.Icon=Properties.Resources.yes1;
}
}
您可以使用文件转换器转换为 ico。
输出:
我正在尝试更改 Windowsform 中 errorProvider 的图标。我在 Properties->Resources 文件夹中添加了 .ico 文件。我试过直接复制粘贴 .ico 文件,也使用了添加资源-> 添加现有文件选项。无论我做什么,如果我添加自己的 .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.WhosebugException
HResult=0x800703E9
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
首先将你的 ico 文件添加到资源并将“复制到输出目录”设置为始终复制
Copy to Outpot Directory Example
private void textBox1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text.Trim() == "")
{
errorProvider1.SetError(textBox1, "ERROR WARNING");
errorProvider1.Icon = new Icon(@"Resources\termicon.ico");
}
}
Example
通过Resource.resx
添加资源也可以很好的引用ico。 Copy if new
是另一种调用方式。
添加现有资源:
最好将 leave
事件更改为 Validating
事件。
我自己测试了你的代码,没有问题。
我这里有 reproduced the error
因为它是由 ico file itself
.
换个图就可以解决
private void TextBox1_Validating(object sender, CancelEventArgs e) {
if(string.IsNullOrEmpty(textBox1.Text)) {
textBox1.Focus();
errorProvider1.Icon=Properties.Resources.error__3_; //here I have change the default icon
errorProvider1.SetError(textBox1, "Input UserId"); //having exception in this line
} else {
errorProvider1.Icon=Properties.Resources.yes1;
}
}
您可以使用文件转换器转换为 ico。
输出: