Select 用户输入资源中的图像以设置 PictureBox 的图像
Select an Image from Resources on user input to set the Image of a PictureBox
这可能没有多大意义,但我正在尝试将 PictureBox 的图像更改为用户请求,如果用户已经搜索它并且它与当前字符串中的图像匹配。
当我 运行 时,我一直收到 "System.ArgumentException: 'Parameter is not valid.'"
。
数组中的每个字符串都与项目资源中图像的名称相匹配。
string[] TShirts = new string[] { "New York", "Melbourne", "London", "Sydney", "Los Angeles" };
for (int i = 0; i < TShirts.Length; i++ )
{
if (txtSearch.Text == TShirts[i])
{
string x = TShirts[i];
ptbItem.Image = new Bitmap(x); // error occurs here (this is what I can't work out)
}
}
您可以使用 ResourceManager 按名称访问位于 run-time 的资源。
您可以将字符串传递给它的 GetObject() 方法并转换为资源类型。
例如:
int idx = Array.IndexOf(TShirts, txtSearch.Text);
if (idx >= 0) {
ptbItem.Image?.Dispose();
ptbItem.Image = (Bitmap)Properties.Resources.ResourceManager.GetObject(TShirts[idx]);
}
由于您有一个字符串集合,您可以填充组合框而不是使用文本框作为输入,因此您的用户不需要猜测 名称并避免输入错误。
这可能没有多大意义,但我正在尝试将 PictureBox 的图像更改为用户请求,如果用户已经搜索它并且它与当前字符串中的图像匹配。
当我 运行 时,我一直收到 "System.ArgumentException: 'Parameter is not valid.'"
。
数组中的每个字符串都与项目资源中图像的名称相匹配。
string[] TShirts = new string[] { "New York", "Melbourne", "London", "Sydney", "Los Angeles" };
for (int i = 0; i < TShirts.Length; i++ )
{
if (txtSearch.Text == TShirts[i])
{
string x = TShirts[i];
ptbItem.Image = new Bitmap(x); // error occurs here (this is what I can't work out)
}
}
您可以使用 ResourceManager 按名称访问位于 run-time 的资源。
您可以将字符串传递给它的 GetObject() 方法并转换为资源类型。
例如:
int idx = Array.IndexOf(TShirts, txtSearch.Text);
if (idx >= 0) {
ptbItem.Image?.Dispose();
ptbItem.Image = (Bitmap)Properties.Resources.ResourceManager.GetObject(TShirts[idx]);
}
由于您有一个字符串集合,您可以填充组合框而不是使用文本框作为输入,因此您的用户不需要猜测 名称并避免输入错误。