1

我有一个字符串数组“abc”,我把它放在一个 for each 循环中。我想使用 foreach 循环中的值从资源中检索图像并将其放入图片框中。

下面的代码:

char[] stringArr = inputted.ToCharArray();
        foreach (char i in stringArr)
        {
            PictureBox pictureBox = new PictureBox(); 
            object obj = ResourceManager.GetObject(i.ToString());
            pictureBox.Image = ((System.Drawing.Bitmap)(obj));
            Controls.Add(pictureBox);
        }

我该怎么做才能让它工作?我想要实现的是有图片,字母表中的每个字符代表一张不同的图片,用户输入一个字符串并单击一个按钮,用户输入被获取,形成 stringArr 并且我希望它输出相关基于他输入的字符串的图像

4

2 回答 2

3

您可以执行以下操作:

object obj = ResourceManager.GetObject("MyResourceName", resourceCulture);
return ((System.Drawing.Bitmap)(obj));

按名称获取资源。

ResourceManager这样:

var ResourceManager = 
    new System.Resources.ResourceManager(
        "YourAssembly.Properties.Resources", 
        typeof(Resources).Assembly);

因此,在您的示例中,您可以编写:

foreach (char i in stringArr)
{
    PictureBox pictureBox = new PictureBox();

    object obj = ResourceManager.GetObject(i.ToString(), resourceCulture);
    pictureBox.Image = ((System.Drawing.Bitmap)(obj));
}

resourceCulture(如果您的图像没有特殊文化,您也可以省略该参数)。

我确实假设您的代码只是一个更大示例的摘录,因为对我来说创建PictureBox内部外观而不将其分配给表单是没有意义的。

于 2012-10-01T10:11:42.333 回答
0

这是您可以使用的简单方法

添加到您的代码中并将 XXXAPPNAMEXXX 替换为您的应用程序的名称。

    public Bitmap GetImageResourceByName(string name)
    {
        Bitmap MethodResult = null;
        try
        {
            MethodResult = (Bitmap)XXXAPPNAMEXXX.Properties.Resources.ResourceManager.GetObject(name, XXXAPPNAMEXXX.Properties.Resources.resourceCulture);

        }
        catch //(Exception ex)
        {
            //ex.HandleException();
        }
        return MethodResult;
    }

注意:进入 Resources.Designer.cs 并公开私有属性 resourceCulture。

我已经注释掉了我的错误处理(ex.HandleException),因为你的可能不同。

于 2016-01-29T09:57:41.967 回答