Как получить имя файла изображения в текстовом поле? - PullRequest
1 голос
/ 10 марта 2012

У меня проблема с именем файла C #. Я показываю некоторые картинки с PictureBox. Также я хочу написать имя картинки в TextBox. Я ищу fileinfo, directoryinfo, но это не работает.

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[..];

и я хочу написать baseball_bat, невесту, браслет и т. Д. В TextBox. Что я могу сделать? любое предложение?

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Ну, один из самых простых способов - сохранить имя и изображение в List<KeyValuePair<string,Image>> или IDictionary<string,image>.

Вот пример использования IDictionary<string,image>
(я решил для1007 * из-за индексации):

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];

Для List<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;
0 голосов
/ 27 января 2013

Эта функция уже встроена ...

Списки изображений хранят свои изображения таким образом, что вы можете ссылаться на них по имени и возвращать изображение.

Одноразовое использование:

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;
    }

Возвращает словарь, который ссылается на индекс изображения для ихимя строки в списке изображений.

Еще раз это встроено, нет необходимости пытаться расширить функцию.к этому ...

0 голосов
/ 10 марта 2012

Вы можете получить все ресурсы вместе с их ключами (именами ресурсов), используя отражение:

//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
        ...

Обновление: Я обновил код для сохранения значенийв словаре, так что вы можете удобно использовать их позже.

...