Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Почему не работает treeNodes -> pictureBox?


Автор: Cinot 17.5.2010, 13:14
Добрый день!
Перейду сразу к проблеме, которую не удалось решить за 2 недели. Кому-то, наверно, это покажется глупостью, т.к. проблема всего в одной строке!

Итак, у меня имеется treeView1. Его члены - treeNodes - носят имена (Name) вида "A1", "W4" и т.д. В папке с ресурсами (в опциях которых я поставил "внедрённые") имеются файлы .jpg с соответствующими названиями (А1.jpg, W4.jpg и т.д.).

Теперь я хочу сделать так, чтобы при выборе элемента дерева в pictureBox1 отображалась соответствующая картинка:

Код

if (e.Node.Text == treeView1.SelectedNode.Text)
            {
                this.pictureBox1.Image = (Image)MyApp.Properties.Resources.ResourceManager.GetObject(treeView1.SelectedNode.Name);
            }

Бесполезно - не работает!
Не работает даже такая почти прямая запиcь (просто для примера!):
Код

if (e.Node.Text == treeView1.SelectedNode.Text)
            {
                String str = "W10";
                this.pictureBox1.Image = (Image)MyApp.Properties.Resources.ResourceManager.GetObject(str);
            }

Работает только непосредственно это:
Код

this.pictureBox1.Image = (Image)MyApp.Properties.Resources.ResourceManager.GetObject("W10");


Не могу понять, в чём дело. Прошу помощи.

Автор: AGENTxXx 17.5.2010, 13:40
Попробуй так:
Код

string sas = "заголовок";
fm1.pictureBox1.Image = (Image)Teboscreen.Properties.Resources.ResourceManager.GetObject(sas);


У меня работает норм. Думаю знаешь что Teboscreen - название проекта

Автор: Cinot 17.5.2010, 14:00
AGENTxXx, но ведь это же то же самое, что у меня во втором примере кода.
Может, какие-то свойства где-то надо выставлять?
P.S. А у тебя работает такая строка?
Код

if (e.Node.Text == treeView1.SelectedNode.Text)
            {
                this.pictureBox1.Image = (Image)Teboscreen.Properties.Resources.ResourceManager.GetObject(treeView1.SelectedNode.Name);
            }

Автор: AGENTxXx 17.5.2010, 14:32
А вот реализация этой части - будет сложней. Просто не охота заморачиваться на это. Разница у меня с тобой в том, что у тебя String а у меня string. Но у меня вроде что в этом что в том работает оба варианта. Решения тебе могу предложить только 2:
1)Создай новый проект, помести ток пикчербокс и напиши то что я например прислал (ну и конечно не забудь добавить картинку) - должно заработать... Если нет, то уж что то ты не так делаешь очевидно
2)Попробуй перестроить проект: Построение -> Построить <имя проекта>. Мне 1 раз помогло - кстати тоже с картинками работал...

Так что давай пробуй

Автор: Cinot 17.5.2010, 15:15
Действительно, создав проект по-новой, всё получилось
Код

this.pictureBox1.Image = (Image)MyApp.Properties.Resources.ResourceManager.GetObject(treeView1.SelectedNode.Name);

Вот что значит отрезвляющий совет =)
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)