Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Практический пример.

Данный практический пример показывает принцип работы с деревом. На форме присутствует дерево и статик с картинкой. В дереве отображается дерево каталогов. При выборе конкретного файла с изображением в статике отображается изображение.А вот и код:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace PictureBrowser
{
	/// 
	/// Summary description for Form1.
	/// 
	public class PictureBrowserForm : System.Windows.Forms.Form
	{
		// Переменная для статика с картинкой	
		private System.Windows.Forms.PictureBox image;
		// Переменная для первой информационной надписи
		private System.Windows.Forms.Label info;
		// Переменная для дерева	
		private System.Windows.Forms.TreeView catalogs;
		// Переменная для второй иноформационной надписи
		private System.Windows.Forms.Label info2;
		private System.ComponentModel.IContainer components;

		public PictureBrowserForm()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();
			// Подготовка элемента дерева( загрузка картинок )	
			PrepareTree();
			// Инициализация дерева названиями логических дисков	
			FillByDrives();
		}

		/// 
		/// Clean up any resources being used.
		/// 
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// 
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// 
		private void InitializeComponent()
		{
			this.image = new System.Windows.Forms.PictureBox();
			this.info = new System.Windows.Forms.Label();
			this.catalogs = new System.Windows.Forms.TreeView();
			this.info2 = new System.Windows.Forms.Label();
			this.SuspendLayout();
			// 
			// image
			// 
			this.image.Location = new System.Drawing.Point(328, 48);
			this.image.Name = "image";
			this.image.Size = new System.Drawing.Size(320, 288);
			this.image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
			this.image.TabIndex = 0;
			this.image.TabStop = false;
			// 
			// info
			// 
			this.info.Location = new System.Drawing.Point(328, 8);
			this.info.Name = "info";
			this.info.TabIndex = 1;
			this.info.Text = "Изображение";
			// 
			// catalogs
			// 
			this.catalogs.ImageIndex = -1;
			this.catalogs.Location = new System.Drawing.Point(0, 48);
			this.catalogs.Name = "catalogs";
			this.catalogs.SelectedImageIndex = -1;
			this.catalogs.Size = new System.Drawing.Size(320, 288);
			this.catalogs.TabIndex = 2;
			this.catalogs.AfterSelect += new System.Windows.Forms.
TreeViewEventHandler(this.catalogs_AfterSelect); this.catalogs.BeforeExpand += new System.Windows.Forms.
TreeViewCancelEventHandler(this.catalogs_BeforeExpand); // // info2 // this.info2.Location = new System.Drawing.Point(8, 8); this.info2.Name = "info2"; this.info2.TabIndex = 3; this.info2.Text = "Дерево каталогов"; // // PictureBrowserForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(656, 349); this.Controls.Add(this.info2); this.Controls.Add(this.catalogs); this.Controls.Add(this.info); this.Controls.Add(this.image); this.Name = "PictureBrowserForm"; this.Text = "PictureBrowser"; this.ResumeLayout(false); } #endregion /// /// The main entry point for the application. /// static void Main() { Application.Run(new PictureBrowserForm()); } /// /// Данный метод выполняет предварительную инициализацию дерева каталогов /// // Инициализация дерева названиями логических дисков private void PrepareTree() { try { //создание списка изображений imglist = new ImageList(); // Добавление иконок в список изображений imglist.Images.Add(new Icon(GetType(),"CLSDFOLD.ICO")); imglist.Images.Add(new Icon(GetType(),"OPENFOLD.ICO")); imglist.Images.Add(new Icon(GetType(),"NOTE11.ICO")); imglist.Images.Add(new Icon(GetType(),"NOTE12.ICO")); imglist.Images.Add(new Icon(GetType(),"Drive01.ico")); catalogs.ImageList = imglist ; // Переменная для стандартного рисунка(черный квадрат), который будет
// показываться тогда когда файл не яв ляется рисунком bitmap = new Bitmap(GetType(),"nopicture.bmp"); } catch(Exception ex) { MessageBox.Show(ex.Message,"Ошибка при работе со списком изображений",
MessageBoxButtons.OK,MessageBoxIcon.Error); Application.Exit(); } } // Переменная для списка изображений private ImageList imglist; // Переменная для стандартного рисунка private Bitmap bitmap; private void FillByDrives() { // Метод для получения списка логических дисков string []drives = Directory.GetLogicalDrives(); // Перебор списка дисков foreach(string drive in drives) { // Создание конкретного узла и назначение иконок TreeNode node = new TreeNode(drive,4,4); // Добавили готовый узел к дереву catalogs.Nodes.Add(node); // Заполнение узлов с дисками FillByDirectories(node); } } // Метод для заполнения узлов дерева содержимым каталога private void FillByDirectories(TreeNode node) { try { // В node.FullPath - находится полный путь к ветке DirectoryInfo dirinfo = new DirectoryInfo(node.FullPath); // Получение информации о каталогах DirectoryInfo[] dirs = dirinfo.GetDirectories(); // Обработка информации foreach(DirectoryInfo dir in dirs) { TreeNode tree = new TreeNode(dir.Name,0,1); // Присваиваем значение Dir, что для нас будет означать // каталог tree.Tag = "Dir"; node.Nodes.Add(tree); } // Получение информации о файлах FileInfo[] files = dirinfo.GetFiles(); // Обработка информации foreach(FileInfo file in files) { TreeNode tree = new TreeNode(file.Name,2,3); // Присваиваем значение File, что для нас будет означать // файл tree.Tag = "File"; node.Nodes.Add(tree); } } // Исключение будет генерироваться например для дисковода, если там нет // диска catch { } } private void catalogs_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { // желательно вызывать при обновлении содержимого дерева catalogs.BeginUpdate(); try { foreach(TreeNode node in e.Node.Nodes) { if(node.Tag == "Dir") FillByDirectories(node); } } catch { } // желательно вызывать при обновлении содержимого дерева catalogs.EndUpdate(); } // Метод, отображающий картинку в статике private void catalogs_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { if(e.Node.Tag=="File") { try { // Картинка из файла image.Image = Image.FromFile(e.Node.FullPath); } catch { // Картинка по умолчанию image.Image = bitmap; } } } } }


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru