Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# для профСссионалов. Π’ΠΎΠΌ IIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 17

Автор Π‘ΠΈΠΌΠΎΠ½ Робинсон

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ вывСсти врСмя создания, врСмя послСднСго доступа ΠΈ врСмя послСднСго измСнСния для ΠΏΠ°ΠΏΠΎΠΊ β€” DirectoryInfo Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ свойства. ΠœΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ эти свойства Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ простоту прилоТСния.

ΠœΡ‹ создаСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ стандартноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ C# Windows Π² Visual Studio.NET ΠΈ добавляСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ тСкстовыС поля ΠΈ ΠΎΠΊΠ½ΠΎ списка ΠΈΠ· области Windows Forms Π² ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов. Π—Π°Ρ‚Π΅ΠΌ элСмСнты управлСния ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π±ΠΎΠ»Π΅Π΅ понятныС ΠΈΠΌΠ΅Π½Π° txtBoxInput, txtBoxFolder, buttonDisplay, buttonUp, listBoxFiles, listBoxFolders, textBoxFileName, textBoxCreationTime, txtBoxLastAccessTime, txtBoxLasrWriteTime ΠΈ textBoxFileSize.

ПослС Ρ‡Π΅Π³ΠΎ добавляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.IO;

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ это для всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² этой Π³Π»Π°Π²Π΅, связанных с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, Π½ΠΎ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ явно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π—Π°Ρ‚Π΅ΠΌ ΠΊ основной Ρ„ΠΎΡ€ΠΌΠ΅ добавляСтся ΠΏΠΎΠ»Π΅-Ρ‡Π»Π΅Π½:

public class Form1 : System.Windows.Forms.Form {

#region Member Fields

 private string currentFolderPath;

currentFolderPath Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ доступа ΠΏΠ°ΠΏΠΊΠΈ, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ выводится Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΎΠΊΠ½Π΅ списка.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ событий. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ способы Π²Ρ‹Π²ΠΎΠ΄Π°:

β–‘ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Display. Π’ этом случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ тСкст Π² основном тСкстовом ΠΏΠΎΠ»Π΅ являСтся ΠΏΡƒΡ‚Π΅ΠΌ доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΠ΅. Если это ΠΏΠ°ΠΏΠΊΠ°, ΠΌΡ‹ пСрСчисляСм Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΏΠΊΠΈ этой ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ списка. Если это Ρ„Π°ΠΉΠ», ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это для ΠΏΠ°ΠΏΠΊΠΈ, содСрТащСй этот Ρ„Π°ΠΉΠ», Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ свойства Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΈΠΆΠ½ΠΈΡ… тСкстовых полях.

β–‘ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ Π½Π° ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² ΠΎΠΊΠ½Π΅ списка Files. Π’ этом случаС ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ свойства этого Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΈΠΆΠ½ΠΈΡ… тСкстовых полях.

β–‘ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ Π½Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ списка Folders. Π’ этом случаС ΠΌΡ‹ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ всС элСмСнты управлСния ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ содСрТимоС этой Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ списка.

β–‘ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Up. Π’ этом случаС ΠΌΡ‹ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ всС элСмСнты управлСния ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ содСрТимоС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ списка.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ содСрТимоС всСх элСмСнтов управлСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½:

protected void ClearAllFields() {

 listBoxFolders.Items.Clear();

 listBoxFiles.Items.Clear();

 txtBoxFolder.Text = "";

 txtBoxFileName.Text = "";

 txtBoxCreationTime.Text = "";

 txtBoxLastAccessTime.Text = "";

 txtBoxLastWriteTime.Text = "";

 txtBoxSize.Text ="";

}

Π—Π°Ρ‚Π΅ΠΌ опрСдСляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ DisplayFileInfo(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ процСсс Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² тСкстовых полях. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΏΡƒΡ‚ΠΈ доступа Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, создавая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ FileInfo Π½Π° основС этого ΠΏΡƒΡ‚ΠΈ доступа:

protected void DisplayFileInfo(string fileFullName) {

 txtBoxFileName.Text = TheFile.Name;

 txtBoxCreationTime.Text = TheFile.CreationTime.ToLongTimeString();

 txtBoxLastAccessTime.Text = TheFile.LastAccessTime.ToLongDateString();

 txtBoxLastWriteTime.Text = TheFile.LastWriteTime.ToLongDateString();

 txtBoxFileSize.Text = TheFile.Length.ToString() + " bytes";

}

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ здСсь ΠΌΡ‹ Π²ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ ΠΎΡ‚ пороТдСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² случаС ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с мСстополоТСниСм Ρ„Π°ΠΉΠ»Π°. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ (Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий). НаконСц, ΠΌΡ‹ опрСдСляСм ΠΌΠ΅Ρ‚ΠΎΠ΄ DisplayFolderList(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ содСрТимоС Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π² Π΄Π²ΡƒΡ… ΠΎΠΊΠ½Π°Ρ… списка. ПолноС имя ΠΏΡƒΡ‚ΠΈ доступа ΠΏΠ°ΠΏΠΊΠΈ пСрСдаСтся Π² этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

protected void DisplayFolderList(string folderFullName) {

 DirectoryInfo TheFolder = new DirectoryInfo(folderFullName);

 if (TheFolder.Exists)

throw new DirectoryNotFoundException("Folder not found: " + folderFullName);

 ClearAllFields();

 txtBoxFolder.Text = TheFolder.FullName;

 currentFolderPath = TheFolder.FullName;

 // пСрСчисляСм всС ΠΏΠ°ΠΏΠΊΠΈ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ

 foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories())

  listBoxFolders.Items.Add(NextFolder.Name);

 // пСрСчисляСм всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅

 foreach (FileInfo NextFile in TheFolder.GetFiles())

  listBoxFiles.Items.Add(NextFile.Name);

}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Display являСтся самым слоТным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности для Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ тСкста. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ имя ΠΏΡƒΡ‚ΠΈ доступа ΠΏΠ°ΠΏΠΊΠΈ, имя ΠΏΡƒΡ‚ΠΈ доступа Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π½ΠΈ Ρ‚ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅:

protected void onDisplayButtonClick(object sender, EventArgs e) {

 try {

  string FolderPath = txtBoxInput.Text;

  DirectoryInfo TheFolder = new DirectoryInfo(FolderPath);

  if (TheFolder.Exists) {

   DisplayFolderList(TheFolder.FullName);

   return;

  }

  FileInfo TheFile = new FileInfo(FolderPath);

  if (TheFile.Exists) {

   DisplayFolderList(TheFile.Directory.FullName);

   int Index = listBoxFiles.Items.IndexOf(TheFile.Name);

   listBoxFiles.SetSelected(Index, true);

   return;

  }

  throws

   new FileNotFoundException("There is no file or folder with " + "this name: " + txtBoxInput.Text);

 } catch (Exception ex) {

  MessageBox.Show(ex.Message);

 }

}

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ опрСдСляСм, Ρ‡Ρ‚ΠΎ поставляСмый тСкст прСдставляСт ΠΏΠ°ΠΏΠΊΡƒ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ», создавая ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ экзСмпляры DirectoryInfo ΠΈ FileInfo ΠΈ провСряя свойство Exists ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Если Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ сущСствуСт, Ρ‚ΠΎ пороТдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Если это ΠΏΠ°ΠΏΠΊΠ°, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ DisplayFolderList, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΊΠ½Π° списков. Если это Ρ„Π°ΠΉΠ», Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΊΠ½Π° списков ΠΈ тСкстовыС поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выводят свойства Ρ„Π°ΠΉΠ»Π°. ΠœΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ этот случай, заполняя сначала ΠΎΠΊΠ½Π° списков. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ выбираСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ имя Ρ„Π°ΠΉΠ»Π° Π² ΠΎΠΊΠ½Π΅ списка Ρ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π² точности Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» этот элСмСнт, пороТдаСтся событиС Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ просто Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий, зная, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ для Π²Ρ‹Π²ΠΎΠ΄Π° свойств Ρ„Π°ΠΉΠ»Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ являСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся, ΠΊΠΎΠ³Π΄Π° Π² ΠΎΠΊΠ½Π΅ списка выбираСтся элСмСнт Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π»ΠΈΠ±ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ. Он создаСт ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΏΡƒΡ‚ΠΈ доступа Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ DisplayFileInfo(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ€Π°Π½Π΅Π΅:

protected void OnListBoxFilesSelected(object sender, EventArgs e) {

 try {

  string SelectedString = listBoxFiles.SelectedItem.ToString();

  string FullFileName = Path.Combine(currentFolderPath, SelectedString);

  DisplayFileInfo(FullFileName);

 } catch (Exception ex) {

  MessageBox(ex.Message);

 }

}

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ списка ΠΏΠ°ΠΏΠΎΠΊ рСализуСтся ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² этом случаС вызываСтся DisplayFolderList() для обновлСния содСрТимого ΠΎΠΊΠΎΠ½ списков:

protected void OnListBoxFoldersSeleeted(object sender, EventArgs e) {

 try {

  string SelectedString = listBoxFolders.SelectedItem.ToString();

  string FullPathName = Path.Combine(currentFolderPath, SelectedString);

  Display FolderList(FullPathName);

 } catch (Exception ex) {

  MessageBox.Show(ex.Message);

 }

}

НаконСц, ΠΊΠΎΠ³Π΄Π° происходит Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Up, Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ DisplayFolderList(), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² этот Ρ€Π°Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ доступа ΠΏΡ€Π΅Π΄ΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ°ΠΏΠΊΠΈ. Π­Ρ‚ΠΎ достигаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства FileInfo.DirectoryName, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ доступа Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ

protected void OnUpButtonClick(object sender, EventArgs e) {

 try {

  string FolderPath = new FileInfo(currentFolderPath).DirectoryName;

  DisplayFolderList(FolderPath);

 } catch (Exception ex) {

  MessageBox(ex.Message);

 }

}

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ событиям элСмСнтов управлСния. Нам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ этот ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ согласно Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΡŽ Π² Π³Π»Π°Π²Π΅ 7 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Properties Π² Visual Studio для связывания ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий с событиСм.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΎΠΊ дСлаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ MoveTo() ΠΈ Delete() классов FileInfo ΠΈ DirectoryInfo. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² классах File ΠΈ Directory ΡΠ²Π»ΡΡŽΡ‚ΡΡ Move() ΠΈ Delete(). ΠšΠ»Π°ΡΡΡ‹ FileInfo ΠΈ File Ρ‚Π°ΠΊΠΆΠ΅ соотвСтствСнно Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ CopyTo() ΠΈ Copy(). Однако Π½Π΅ сущСствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для копирования ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, копируя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΠ΅.

ИспользованиС всСх этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся Π²ΠΏΠΎΠ»Π½Π΅ понятным, всС Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² MSDN. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡ… использованиС для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… случаСв Π²Ρ‹Π·ΠΎΠ²Π° статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Move(), Copy() ΠΈ Delete() Π½Π° классС File. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ FileProperties Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ FilePropertiesAndMovement. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ свойство, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ свойств Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ этого Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто.