این راهنمای گام به گام را دنبال کنید تا مدیریت فایل اصلی خود را با حداقل سر و صدا بسازید.
ایجاد مجدد برنامه های رایج هنگام یادگیری فرم های ویندوز می تواند بسیار مفید باشد. انجام این کار همچنین می تواند به تقویت درک اولیه شما از برنامه نویسی کمک کند. یکی از نمونههای برنامهای که میتوانید بسازید، یک فایل منیجر اولیه است.
برنامه مدیریت فایل باید از پیوندهای سریع به پوشه های رایج ویندوز (دسکتاپ، اسناد من، تصاویر، موسیقی و ویدیوها) تشکیل شده باشد. همچنین باید قابلیت پیمایش در فهرست های بالا و پایین را داشته باشد.
چگونه عناصر UI را به بوم اضافه کنیم
ابتدا یک برنامه Windows Form جدید در ویژوال استودیو ایجاد کنید. پس از تکمیل، می توانید شروع به اضافه کردن عناصر UI برای مدیر فایل روی بوم کنید.
- با باز شدن بوم، با استفاده از جعبه ابزار، عنصر UI Button را جستجو کنید.
- پنج دکمه را بکشید و رها کنید تا پیوندهای سریع موجود در رایانه ویندوز را نشان دهید. اینها پوشههای Desktop، My Documents، Pictures، Music و Videos را نشان میدهند.
- هر دکمه را به نوبه خود برجسته کنید و به پنجره Properties بروید. ویژگی نام هر دکمه و ویژگی متن را به مقادیر زیر تغییر دهید: دکمه نام ویژگی ویژگی متن 1 دکمه_دسکتاپ دسکتاپ 2 دکمه_اسناد اسناد من 3 دکمه_تصاویر تصاویر 4 دکمه_موسیقی دکمه 5 ویدئوها ویدئوها
- با استفاده از جعبه ابزار یک عنصر FlowLayoutPanel UI را جستجو کنید.
- آن را بکشید و روی بوم رها کنید و در کنار پیوندهای سریع قرار دهید. این جایی است که فایل ها و دایرکتوری های خود را بر اساس دایرکتوری که در حال حاضر مشاهده می کنید نمایش می دهید.
- پانل را برجسته کرده و ویژگی Name را به “panel_FilesList” تغییر دهید.
دکمه
اموال نام
ویژگی متن
1
button_Desktop
دسکتاپ
2
دکمه_اسناد
اسناد من
3
دکمه_تصاویر
تصاویر
4
button_موسیقی
موسیقی
5
button_ویدیوها
فیلم های
نحوه دریافت مسیر فایل فعلی
وقتی روی دکمه ای (مثلاً دسکتاپ) کلیک می کنید، لیست پوشه ها و فایل هایی که روی دسکتاپ هستند باید در پنل نمایش داده شوند. برای انجام این کار، میتوانید مسیر فایل پوشهای را که روی آن کلیک کردهاید، یعنی «C:\Users\User\Desktop» دریافت کنید.
منطق این مورد را در فایل کد پشت سی شارپ برای فرم بنویسید. اگر با کلاس های C# آشنا نیستید، می توانید در مورد کلاس های C# بیشتر بدانید.
- روی هر یک از دکمه های UI دوبار کلیک کنید. این توابع رویداد کلیک را برای هر دکمه در داخل فایل C# برای فرم ایجاد می کند. این توابع زمانی اجرا میشوند که روی دکمه مرتبط کلیک کنید.private void button_Desktop_Click(object sender, EventArgs e){} private void button_Documents_Click(object sender, EventArgs e){} private void button_Pictures button_Pictures_Click (object) کلیک کنید (فرستنده شی، EventArgs e){} private void button_Videos_Click(فرستنده شیء، EventArgs e){}
- برای دریافت مسیر فایل یک دایرکتوری ویژه ویندوز مانند Desktop، از متد ()Environment.GetFolderPath استفاده کنید. این یک رشته از مسیر فایل را برای پوشه برمی گرداند، به عنوان مثال، “C:\Users\User\Desktop”. این را به هر تابع اضافه کنید و مقدار filepath را به تابع دیگری به نام DisplayFiles() ارسال کنید که بعداً ایجاد خواهید کرد.public Form1(){ InitializeComponent(); DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));} private void button_Desktop_Click(object sender, EventArgs e){ DisplayFiles(Environment.GetFolderPath.Desktop. _کلیک کنید(فرستنده شی، EventArgs e ){ DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))؛} private void button_Pictures_Click(object sender, EventArgs e){ DisplayFiles(Environment.F.Environment. } private void button_Music_Click(فرستنده شی، EventArgs e){ DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic))؛} private void button_Videos_Click(object sender, EventArgs e){ Pamento DisplayFiles(MyMyMusic. ))))
private void button_Desktop_Click(object sender, EventArgs e)
{
}
private void button_Documents_Click(object sender, EventArgs e)
{
}
private void button_Pictures_Click(object sender, EventArgs e)
{
}
private void button_Music_Click(object sender, EventArgs e)
{
}
private void button_Videos_Click(object sender, EventArgs e)
{
}
public Form1()
{
InitializeComponent();
DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
}
private void button_Desktop_Click(object sender, EventArgs e)
{
DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
}
private void button_Documents_Click(object sender, EventArgs e)
{
DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
}
private void button_Pictures_Click(object sender, EventArgs e)
{
DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
}
private void button_Music_Click(object sender, EventArgs e)
{
DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic));
}
private void button_Videos_Click(object sender, EventArgs e)
{
DisplayFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos));
}
نحوه رندر کردن فایل ها برای دایرکتوری انتخاب شده
بسته به دکمه Desktop، My Documents، Pictures، Music یا Videos که روی آن کلیک می کنید، فهرستی از فایل ها را نمایش دهید.
- فضای نام System.IO را در بالای فایل وارد کنید. با استفاده از System.IO؛
- یک تابع جدید به نام DisplayFiles() ایجاد کنید تا فایلها و پوشههای یک فهرست انتخابی را نمایش دهد.private void DisplayFiles(string filePath){ // کدی برای نمایش فایلها و پوشهها در داخل دایرکتوری}
- در داخل تابع DisplayFiles() جدید، لیستی از همه دایرکتوری ها و فایل هایی که در داخل پوشه انتخاب شده هستند را کامپایل کنید.string[] filesList = Directory.GetDirectories(filePath).Concat(Directory.GetFiles(filePath)).ToArray();
- مطمئن شوید پانلی که لیست فایل ها و دایرکتوری ها را نمایش می دهد خالی باشد.panel_FilesList.Controls.Clear();
- دایرکتوری فعلی را در یک متغیر جهانی ذخیره کنید.currentLocation = filePath;
- متغیر جهانی را در بالای کلاس اعلام کنید.stringcurrentLocation = “”;
- در تابع DisplayFiles() یک دکمه برای هر دایرکتوری و فایل ایجاد کنید. در یک حلقه for، نام را از بقیه مسیر فایل جدا کنید. به صورت برنامه ریزی شده یک دکمه جدید با نام فایل یا دایرکتوری به عنوان متن دکمه ایجاد کنید.for (int i = 0; i < filesList.Length-1; i++){ bool isHidden = ((File.GetAttributes(filesList[i] ) & FileAttributes.Hidden) == FileAttributes.Hidden); if (!isHidden) { // دریافت نام فایل از مسیر var startOfName = filesList[i].LastIndexOf("\\"); var fileName = filesList[i].Substring(startOfName + 1, filesList[i]. Length - (startOfName + 1)); // نمایش فایل یا پوشه به صورت دکمه Button newButton = new Button(); newButton.Text = نام فایل; newButton.Name = لیست فایل[i]; newButton.Location = new Point(70, 70); newButton.Size = new Size(800, 100); newButton.TextAlign = ContentAlignment.MiddleLeft; newButton.Padding = new Padding(24, 0, 0, 0); panel_FilesList.Controls.Add(newButton); }}
- دکمه play در بالای ویژوال استودیو را فشار دهید تا برنامه اجرا شود.
- روی هر یک از خلاصه عناوین کلیک کنید. برای مثال، اگر روی My Documents کلیک کنید، پانل سمت راست باید با لیستی از فایلها و پوشهها در پوشه My Documents پر شود.
- اگر روی پیوند سریع دیگری، به عنوان مثال، ویدیوها کلیک کنید، پانل باید پاک شود و به نمایش فایلها و پوشهها در پوشه ویدیوها تغییر کند.
using System.IO;
private void DisplayFiles(string filePath)
{
// Code to display the files and folders inside the directory
}
string[] filesList = Directory.GetDirectories(filePath).Concat(Directory.GetFiles(filePath)).ToArray();
panel_FilesList.Controls.Clear();
currentLocation = filePath;
stringcurrentLocation = "";
for (int i = 0; i < filesList.Length-1; i++)
{
bool isHidden = ((File.GetAttributes(filesList[i]) & FileAttributes.Hidden) == FileAttributes.Hidden);
if (!isHidden)
{
// Get the name of the file from the path
var startOfName = filesList[i].LastIndexOf("\\");
var fileName = filesList[i].Substring(startOfName + 1, filesList[i].Length - (startOfName + 1));
// Display the file or folder as a button
Button newButton = new Button();
newButton.Text = fileName;
newButton.Name = filesList[i];
newButton.Location = new Point(70, 70);
newButton.Size = new Size(800, 100);
newButton.TextAlign = ContentAlignment.MiddleLeft;
newButton.Padding = new Padding(24, 0, 0, 0);
panel_FilesList.Controls.Add(newButton);
}
}
نحوه پیمایش دایرکتوری های بالا و پایین
کد را طوری تغییر دهید که وقتی روی یک پوشه نمایش داده شده در لیست کلیک می کنید، یک دایرکتوری را به پایین منتقل کنید. همچنین می توانید یک دکمه بازگشت ایجاد کنید تا به پوشه قبلی برگردید.
- برای جابجایی یک دایرکتوری به پایین، یک تابع جدید به نام button_Click_Open() ایجاد کنید. اگر کاربر روی دایرکتوری در لیست کلیک کند، برنامه تابع DisplayFiles() را برای نمایش فایل های داخل آن دایرکتوری فراخوانی می کند. اگر کاربر به جای آن روی یک فایل کلیک کند، برنامه file.private void button_Click_Open(object sender, EventArgs e){ Button button = (Button)sender; رشته filePath = button.Name; سعی کنید { // اگر دایرکتوری کلیک کرد، فهرست فایلها را در فهرست جدید دوباره بارگیری کنید DisplayFiles(filePath)؛ } catch (exception ex) { // اگر روی فایل کلیک شد، فایل را باز کنید var process = new System.Diagnostics.Process(); process.StartInfo = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true، FileName = filePath }; process.Start(); }}
- در تابع DisplayFiles() بخشی از کد را تغییر دهید که یک دکمه جدید ایجاد می کند. پس از ایجاد دکمه، یک خط جدید اضافه کنید تا تابع new button_Click_Open() را به Click event.newButton.Click += button_Click_Open;
- برای پشتیبانگیری از یک فهرست، یک دکمه بازگشت ایجاد کنید. روی بوم، روی دکمه جدید با استفاده از جعبه ابزار کلیک کرده و بکشید.
- دکمه برگشت جدید را برجسته کنید. در پنجره خواص، ویژگی Text را به “< بازگشت" تغییر دهید.
- روی دکمه برگشت دوبار کلیک کنید تا عملکرد رویداد کلیک ایجاد شود که وقتی کاربر روی دکمه برگشت کلیک میکند فعال میشود. private void back_Click(فرستنده شی، EventArgs e){}
- در داخل تابع، مسیر فایل پوشه را در یک سطح بالاتر پیدا کنید و فایل ها و دایرکتوری های پوشه فوق را نمایش دهید.var previousFolder = this.currentLocation.Substring(0, this.currentLocation.LastIndexOf(“\\”));DisplayFiles (فولدر قبلی)؛
- دکمه پخش را دوباره در بالای ویژوال استودیو فشار دهید تا برنامه اجرا شود. دوباره روی هر یک از پیوندهای سریع کلیک کنید تا لیستی از پوشه ها یا فایل ها نمایش داده شود.
- در داخل پانل، روی یک پوشه کلیک کنید تا یک فهرست به پایین منتقل شود.
- روی دکمه برگشت کلیک کنید تا به فهرست قبلی برگردید.
private void button_Click_Open(object sender, EventArgs e)
{
Button button = (Button)sender;
string filePath = button.Name;
try
{
// If a directory clicked, reload list of files in new directory
DisplayFiles(filePath);
}
catch (Exception ex)
{
// If file clicked, open the file
var process = new System.Diagnostics.Process();
process.StartInfo = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = filePath };
process.Start();
}
}
newButton.Click += button_Click_Open;
private void back_Click(object sender, EventArgs e)
{
}
var previousFolder = this.currentLocation.Substring(0, this.currentLocation.LastIndexOf("\\"));
DisplayFiles(previousFolder);
ایجاد برنامه های دسکتاپ با استفاده از فرم های ویندوز
مدیر فایل یک برنامه ساده است که می توانید هنگام یادگیری نحوه ایجاد یک برنامه Windows Form بسازید. میتوانید از جعبه ابزار برای کشیدن و رها کردن یک پانل روی بوم، همراه با دکمههای مختلف دیگر استفاده کنید.
اکنون که برنامه شما عملکرد اصلی را دارد، به راحتی می توانید ویژگی های دکمه را برای بهبود طراحی مدیر فایل تغییر دهید.
برخی از دیگر برنامه های مبتدی را که می توانید هنگام یادگیری در مورد برنامه های Windows Forms ایجاد کنید، کشف کنید.