1

我对 C# 文件名有疑问。我用 PictureBox 展示了一些图片。我还想在文本框中写下图片的名称。我搜索文件信息、目录信息,但它不起作用。

List<Image> images = new List<Image>();
 images.Add(Properties.Resources.baseball_bat);
 images.Add(Properties.Resources.bracelet);
 images.Add(Properties.Resources.bride);

pictureBox1.Image = images[..];

我想在文本框中写棒球棒、新娘、手镯等。我能做些什么?有什么优惠吗?

4

3 回答 3

1

好吧,最简单的方法之一是将名称和图像保存在 a List<KeyValuePair<string,Image>>orIDictionary<string,image>中。

这是一个使用 a 的示例IDictionary<string,image>
(我SortedList<>因为索引而决定):

var images = new SortedList<string, Image>();
images.Add("baseball_bat", Properties.Resources.baseball_bat);
images.Add("bracelet", Properties.Resources.bracelet);
...

// when you show the first image...
pictureBox1.Image = images.Values[0];
textBox1.Text = images.Keys[0];

// when you show the nth image...
pictureBox1.Image = images.Values[n];
textBox1.Text = images.Keys[n];

对于 aList<KeyValuePair<string,Image>>将是:

var images = new List<KeyValuePair<string, Image>>();
images.Add(new KeyValuePair<string,Image>("baseball_bat", Properties.Resources.baseball_bat));
images.Add(new KeyValuePair<string,Image>("bracelet", Properties.Resources.bracelet));
...

// when you show the first image...
pictureBox1.Image = images[0].Values;
textBox1.Text = images[0].Keys;

// when you show the nth image...
pictureBox1.Image = images[n].Values;
textBox1.Text = images[n].Keys;
于 2012-03-10T14:43:53.483 回答
0

您可以使用反射获取所有资源及其键(资源名称):

//a helper dictionary if you want to save the images and their names for later use
var namesAndImages = new Dictionary<String, Image>();

var resourcesSet = Properties.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true);

        foreach (System.Collections.DictionaryEntry myResource in resourcesSet)
        {
            if (myResource.Value is Image) //is this resource is associated with an image
            {
                String resName = myResource.Key.ToString(); //get resource's name
                Image resImage = myResource.Value as Image; //get the Image itself

                namesAndImages.Add(resName, resImage);
            }
        }

        //now you can use the values saved in the dictionary and easily get their names
        ...

更新:我更新了代码以将值保存在字典中,以便您以后可以方便地使用它们。

于 2012-03-10T14:35:10.513 回答
0

此功能已经内置...

图像列表以您可以通过名称引用它们并返回图像的方式存储它们的图像。

一次性使用:

private string GetImageName(ImageList imglist, int index)
    {
        return imglist.Images.Keys[index].ToString();
    }

这将返回传递索引处的图像名称

为以后存储值:

private Dictionary<int, string> GetImageNames(ImageList imglist)
    {
        var dict = new Dictionary<int, string>();
        int salt = 0;

        foreach (var item in imglist.Images.Keys)
        {
            dict.Add(salt, item.ToString());
            salt++;
        }
        return dict;
    }

这将返回一个字典,该字典将图片索引引用到图像列表中的字符串名称。

再次,这是内置的,无需尝试扩展功能。对它...

于 2013-01-26T20:52:23.247 回答