c# Как загрузить картинку в picturebox из TreeView?

Загружаем картинку в PictureBox из TreeView

В этой статье хочу показать, как загрузить картинку в PictureBox при выборе узла в элементе управления TreeView.

picturebox

Для начала создадим новый проект типа Windows Forms Application на языке c#. Затем добавим на форму два элемента управления: TreeView и PictureBox.

В элементе TreeView создадим дерево, состоящее из нескольких элементов.

private void CreateTree()
{
TreeNode root = treeView1.Nodes.Add("cars");
TreeNode firstChild = root.Nodes.Add("toyota");
firstChild.Nodes.Add("Corolla");
firstChild.Nodes.Add("Camry");
TreeNode lastChild = root.Nodes.Add("bmw");
lastChild.Nodes.Add("x5");
lastChild.Nodes.Add("x6");
}

Созданный метод поместим для выполнения в обработчике события Form_Load.

private void Form1_Load(object sender, EventArgs e)
{
CreateTree();
}

Теперь нам нужно сделать так, чтобы при выборе узла в элементе TreeView автоматически загружалась картинка в элемент управления PictureBox.

Получить выбранный узел в элементе TreeView можно разными способами, например, в данном примере для этого воспользуемся событием AfterSelect.

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
//получаем текстовое содержимое выбранного узла
string text = e.Node.Text;
//получаем индекс выбранного узла
int index = e.Node.Index;
}

Загрузить картинку в PictureBox можно следующим образом:

private void PictureBoxLoadImage(string path)
{
try
{
pictureBox1.Image = Image.FromFile(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Выбранное значение в элементе управления TreeView обработаем с помощью конструкции switch case.

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
switch (e.Node.Text)
{
case "corolla": PictureBoxLoadImage(@"c:\img\corolla.jpg"); break;
case "camry": PictureBoxLoadImage(@"c:\img\camry.jpg"); break;
case "x5": PictureBoxLoadImage(@"с:\img\x5.jpeg"); break;
case "x6": PictureBoxLoadImage(@"с:\img\x6.jpg"); break;
default: pictureBox1.Image = null; break;
}
}

Читайте также:

4 комментария

  1. саня says:

    спасибо, админ ты крут!!! но у меня еще очень много вопросов))) один из них:
    а если я хочу добавить, к примеру bmv x7, в ветку bmv только имея .ехе по двойному клику, хотелось бы окошко какое нибудь окно, в котором, я смог бы, добавить
    1. основную фотку как на примере.
    2. еще к примере чертёж(под картинкой по нажатию кнопки)
    3. и тхт(описание)
    получается, в итоге какая нибудь панель, в ней осн. фото. кнопка чертежа. кнопка тхт)))
    и это при одном нажатии на модель машины))))
    если не сложно можно пример? если все выгорит, отблагодарю!!!!!!!!!!!

  2. саня says:

    блин не могу понять как добавить дочернее окно под
    lastChild.Nodes.Add(«x5»); ?

    TreeNode lastChild = root.Nodes.Add(«bmw»);
    lastChild.Nodes.Add(«x5»);
    lastChild.Nodes.Add(«340»);
    astChild.Nodes.Add(«и тд»);

  3. TreeNode x5Node = lastChild.Nodes[0];
    x5Node.Nodes.Add("speed", "скорость");
    x5Node.Nodes.Add("price", "цена");
    x5Node.Nodes[0].Nodes.Add("value", "340");
    x5Node.Nodes[1].Nodes.Add("value", "100000");

    Проверка комментариев проходит в течении дня.

    Добавил пример добавления узлов в элемент TreeView с помощью формы.

  4. netpicsik says:

    Отрисовывались изображения по размеру меньше или равные размеру bitmap, на который они отрисовывались. Кстати, может кто-то знает быстрый метод сжатия картинки? Стандартный очень долгий.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*