Menu، ToolBar و StatusBar 🎛️
یاد میگیریم چطور منو، نوار ابزار و نوار وضعیت به فرممون اضافه کنیم!
MenuStrip: ایجاد منوی حرفهای
MenuStrip یکی از مهمترین کنترلهای Windows Forms هست که بهمون اجازه میده منوی حرفهای مثل File، Edit، View و... بسازیم. هر منو میتونه زیرمنو داشته باشه و هر آیتم میتونه یه عمل خاص انجام بده.
// اضافه کردن MenuStrip به فرم
public partial class Form1 : Form
{
private MenuStrip menuStrip;
private ToolStripMenuItem fileMenu;
private ToolStripMenuItem editMenu;
public Form1()
{
InitializeComponent();
CreateMenu();
}
private void CreateMenu()
{
// ایجاد MenuStrip
menuStrip = new MenuStrip();
// ایجاد منوی File
fileMenu = new ToolStripMenuItem("فایل");
fileMenu.DropDownItems.Add("جدید", null, NewFile_Click);
fileMenu.DropDownItems.Add("باز کردن", null, OpenFile_Click);
fileMenu.DropDownItems.Add("-"); // جداکننده
fileMenu.DropDownItems.Add("خروج", null, Exit_Click);
// اضافه کردن منوها به MenuStrip
menuStrip.Items.Add(fileMenu);
// اضافه کردن MenuStrip به فرم
this.MainMenuStrip = menuStrip;
this.Controls.Add(menuStrip);
}
}
ToolStrip: نوار ابزار قدرتمند
ToolStrip برای ایجاد نوار ابزار استفاده میشه. میتونیم دکمهها، ComboBox، TextBox و حتی Separator اضافه کنیم. معمولاً زیر منو قرار میگیره و دسترسی سریع به عملکردهای مهم رو فراهم میکنه.
private void CreateToolBar()
{
ToolStrip toolStrip = new ToolStrip();
// دکمه جدید
ToolStripButton newButton = new ToolStripButton();
newButton.Text = "جدید";
newButton.Image = Properties.Resources.NewIcon; // آیکون
newButton.Click += NewFile_Click;
// دکمه ذخیره
ToolStripButton saveButton = new ToolStripButton();
saveButton.Text = "ذخیره";
saveButton.Image = Properties.Resources.SaveIcon;
saveButton.Click += SaveFile_Click;
// جداکننده
ToolStripSeparator separator = new ToolStripSeparator();
// ComboBox برای انتخاب فونت
ToolStripComboBox fontCombo = new ToolStripComboBox();
fontCombo.Items.AddRange(new string[] { "Arial", "Tahoma", "Vazir" });
fontCombo.SelectedIndexChanged += FontCombo_Changed;
// اضافه کردن آیتمها به ToolStrip
toolStrip.Items.AddRange(new ToolStripItem[] {
newButton, saveButton, separator, fontCombo
});
this.Controls.Add(toolStrip);
}
StatusStrip: نوار وضعیت اطلاعرسان
StatusStrip معمولاً در پایین فرم قرار میگیره و اطلاعات مفیدی مثل وضعیت برنامه، تاریخ و ساعت، یا پیامهای راهنما نمایش میده. میتونه شامل Label، ProgressBar و حتی دکمه باشه.
private void CreateStatusBar()
{
StatusStrip statusStrip = new StatusStrip();
// برچسب وضعیت
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel();
statusLabel.Text = "آماده";
statusLabel.Spring = true; // فضای اضافی رو پر میکنه
// نوار پیشرفت
ToolStripProgressBar progressBar = new ToolStripProgressBar();
progressBar.Value = 50;
progressBar.Visible = false;
// برچسب تاریخ و ساعت
ToolStripStatusLabel dateTimeLabel = new ToolStripStatusLabel();
dateTimeLabel.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm");
// اضافه کردن آیتمها به StatusStrip
statusStrip.Items.AddRange(new ToolStripItem[] {
statusLabel, progressBar, dateTimeLabel
});
this.Controls.Add(statusStrip);
// بروزرسانی ساعت هر ثانیه
Timer timer = new Timer();
timer.Interval = 1000;
timer.Tick += (s, e) => {
dateTimeLabel.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
};
timer.Start();
}
تمرین! 🧠
یه فرم بساز که شامل MenuStrip، ToolStrip و StatusStrip باشه. منو باید شامل "فایل" و "ویرایش" باشه. نوار ابزار باید دکمههای "جدید"، "باز کردن" و "ذخیره" داشته باشه. نوار وضعیت هم باید تاریخ و ساعت جاری رو نمایش بده.
جواب تمرین
public partial class Form1 : Form
{
private StatusStrip statusStrip;
private ToolStripStatusLabel dateTimeLabel;
public Form1()
{
InitializeComponent();
CreateMenuAndToolbars();
StartTimer();
}
private void CreateMenuAndToolbars()
{
// ایجاد MenuStrip
MenuStrip menuStrip = new MenuStrip();
// منوی فایل
ToolStripMenuItem fileMenu = new ToolStripMenuItem("فایل");
fileMenu.DropDownItems.Add("جدید", null, (s, e) => NewFile());
fileMenu.DropDownItems.Add("باز کردن", null, (s, e) => OpenFile());
fileMenu.DropDownItems.Add("ذخیره", null, (s, e) => SaveFile());
// منوی ویرایش
ToolStripMenuItem editMenu = new ToolStripMenuItem("ویرایش");
editMenu.DropDownItems.Add("کپی", null, (s, e) => Copy());
editMenu.DropDownItems.Add("چسباندن", null, (s, e) => Paste());
menuStrip.Items.AddRange(new ToolStripItem[] { fileMenu, editMenu });
// ایجاد ToolStrip
ToolStrip toolStrip = new ToolStrip();
toolStrip.Items.Add("جدید", null, (s, e) => NewFile());
toolStrip.Items.Add("باز کردن", null, (s, e) => OpenFile());
toolStrip.Items.Add("ذخیره", null, (s, e) => SaveFile());
// ایجاد StatusStrip
statusStrip = new StatusStrip();
dateTimeLabel = new ToolStripStatusLabel();
statusStrip.Items.Add(dateTimeLabel);
// اضافه کردن به فرم
this.MainMenuStrip = menuStrip;
this.Controls.Add(menuStrip);
this.Controls.Add(toolStrip);
this.Controls.Add(statusStrip);
}
private void StartTimer()
{
Timer timer = new Timer();
timer.Interval = 1000;
timer.Tick += (s, e) => {
dateTimeLabel.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
};
timer.Start();
}
private void NewFile() => MessageBox.Show("فایل جدید ایجاد شد!");
private void OpenFile() => MessageBox.Show("فایل باز شد!");
private void SaveFile() => MessageBox.Show("فایل ذخیره شد!");
private void Copy() => MessageBox.Show("کپی شد!");
private void Paste() => MessageBox.Show("چسبانده شد!");
}