ایجاد منو در سی شارپ
برای ایجاد منو در سی شارپ از کنترل MenuStrip استفاده میشود. با کشیدن آن روی فرم و تایپ متن آیتمها، منوی حرفهای بسازید.
05 خرداد 1405
لینک کوتاه
ایجاد منو در سی شارپ
در برنامهنویسی ویندوز فرم با سی شارپ، منوها یکی از عناصر کلیدی برای ایجاد رابط کاربری حرفهای و سازمانیافته هستند.دو نوع اصلی منو در WinForms وجود دارد:
- MenuStrip : منوی اصلی برنامه که در بالای فرم قرار میگیرد (مثل منوهای File, Edit, View)
- ContextMenuStrip : منوی کلیک راست (متنکسباق) که با راستکلیک روی یک کنترل ظاهر میشود
MenuStrip منوی اصلی فرم در سی شارپ
1. آشنایی با MenuStrip
MenuStrip کلاسی است که سیستم منوی یک فرم را فراهم میکند.این کنترل جایگزین MainMenu در نسخههای قدیمیتر است و امکانات بیشتری مانند پشتیبانی از MDI (Multiple Document Interface) و مدیریت کلیدهای میانبر را دارد.
۲. ایجاد MenuStrip به روش طراحی (Design Time)
- از جعبه ابزار (Toolbox) کنترل MenuStrip را روی فرم بکشید و رها کنید
- روی منو کلیک کنید و «Type Here» را بنویسید تا آیتم جدید اضافه شود
- برای ایجاد زیرمنو، روی آیتم کلیک کنید و زیر آن «Type Here» بنویسید
3. ایجاد MenuStrip به روش کدنویسی (Run Time)
// ایجاد کنترل MenuStrip
MenuStrip menuStrip = new MenuStrip();
// ایجاد آیتم سطح اول (منوی File)
ToolStripMenuItem fileMenu = new ToolStripMenuItem("File");
// ایجاد زیرمنوها
ToolStripMenuItem openMenuItem = new ToolStripMenuItem("Open");
ToolStripMenuItem saveMenuItem = new ToolStripMenuItem("Save");
ToolStripMenuItem exitMenuItem = new ToolStripMenuItem("Exit");
// اضافه کردن زیرمنوها به منوی File
fileMenu.DropDownItems.Add(openMenuItem);
fileMenu.DropDownItems.Add(saveMenuItem);
fileMenu.DropDownItems.Add(new ToolStripSeparator()); // خط جداکننده
fileMenu.DropDownItems.Add(exitMenuItem);
// اضافه کردن منوی File به MenuStrip
menuStrip.Items.Add(fileMenu);
// اضافه کردن منوی Edit
ToolStripMenuItem editMenu = new ToolStripMenuItem("Edit");
menuStrip.Items.Add(editMenu);
// اضافه کردن MenuStrip به فرم
this.Controls.Add(menuStrip);
this.MainMenuStrip = menuStrip; // تنظیم به عنوان منوی اصلی[citation:1]
4. ایجاد چندسطحی (زیرمنوهای تو در تو)
برای ایجاد منوی سه سطحی، کافی است به آیتم زیرمنو، آیتم دیگری اضافه کنید:// سطح اول
ToolStripMenuItem fileMenu = new ToolStripMenuItem("File");
// سطح دوم
ToolStripMenuItem saveMenuItem = new ToolStripMenuItem("Save");
// سطح سوم (زیرمنوی Save As)
ToolStripMenuItem saveAsMenuItem = new ToolStripMenuItem("Save As");
saveMenuItem.DropDownItems.Add(saveAsMenuItem);
// اضافه کردن به ساختار
fileMenu.DropDownItems.Add(saveMenuItem);
5. تنظیم خصوصیات مهم MenuStrip
| خصوصیت | توضیح |
| Text | متن نمایش داده شده روی آیتم |
| Name | نام برنامهنویسی آیتم |
| ShortcutKeys | کلیدهای میانبر (مثل Ctrl+S) |
| Image | آیکون کنار آیتم |
| Enabled | فعال/غیرفعال کردن آیتم |
| Visible | نمایش/مخفی کردن آیتم |
| DropDownItems | دسترسی به آیتمهای زیرمنو |
6. رویدادهای مهم (Events) برای آیتم منو در سی شارپ
مهمترین رویداد برای آیتمهای منو، رویداد Click است:// اضافه کردن رویداد به روش کدنویسی
saveMenuItem.Click += SaveMenuItem_Click;
openMenuItem.Click += OpenMenuItem_Click;
exitMenuItem.Click += (sender, e) => this.Close();
// پیادهسازی رویداد
private void SaveMenuItem_Click(object sender, EventArgs e)
{
// کد ذخیره فایل
MessageBox.Show("ذخیره انجام شد");
}
private void OpenMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// کد باز کردن فایل
}
}
7. اضافه کردن آیکون به آیتمهای منو
// اضافه کردن آیکون از فایل
Image icon = Image.FromFile("C:\\icon.png");
saveMenuItem.Image = icon;
// یا از ImageList موجود
ImageList imageList = new ImageList();
// ... اضافه کردن تصاویر به ImageList
saveMenuItem.ImageIndex = 0;
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
ContextMenuStrip منوی کلیک راست در سی شارپ
1. آشنایی با ContextMenuStrip
ContextMenuStrip منویی است که با راستکلیک روی یک کنترل ظاهر میشود و گزینههای مرتبط با آن کنترل را نمایش میدهد.2. ایجاد و اتصال ContextMenuStrip
روش اول — اتصال از طریق طراحی
- کنترل ContextMenuStrip را از جعبه ابزار روی فرم بکشید
- آیتمهای مورد نظر را اضافه کنید
- در خصوصیات هر کنترل (مثل Button، TextBox، DataGridView) خصوصیت ContextMenuStrip را به کنترل ساخته شده تنظیم کنید
روش دوم — اتصال به روش کدنویسی
// ایجاد ContextMenuStrip
ContextMenuStrip contextMenu = new ContextMenuStrip();
// ایجاد آیتمها
ToolStripMenuItem editItem = new ToolStripMenuItem("ویرایش");
ToolStripMenuItem deleteItem = new ToolStripMenuItem("حذف");
ToolStripMenuItem copyItem = new ToolStripMenuItem("کپی");
// اضافه کردن آیتمها به منو
contextMenu.Items.Add(editItem);
contextMenu.Items.Add(deleteItem);
contextMenu.Items.Add(copyItem);
// اضافه کردن خط جداکننده
contextMenu.Items.Add(new ToolStripSeparator());
// اضافه کردن آیتم دیگر
ToolStripMenuItem propertiesItem = new ToolStripMenuItem("خصوصیات");
contextMenu.Items.Add(propertiesItem);
// اتصال منو به یک کنترل (مثلاً Button)
button1.ContextMenuStrip = contextMenu;
3. رویدادهای ContextMenuStrip
// اضافه کردن رویداد به آیتمها
editItem.Click += ContextMenu_Click;
deleteItem.Click += ContextMenu_Click;
copyItem.Click += ContextMenu_Click;
// رویداد مشترک برای همه آیتمها
private void ContextMenu_Click(object sender, EventArgs e)
{
ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
switch (clickedItem.Text)
{
case "ویرایش":
// کد ویرایش
break;
case "حذف":
// کد حذف (با تأیید)
if (MessageBox.Show("آیا برای حذف اطمینان دارید؟", "تأیید",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// انجام حذف
}
break;
case "کپی":
// کد کپی
Clipboard.SetText(textBox1.SelectedText);
break;
}
}

اضافه کردن پویا (داینامیک) منوها در سی شارپ
گاهی نیاز دارید منوها را در زمان اجرا و بر اساس شرایط مختلف ایجاد کنید.1. اضافه کردن پویا به MenuStrip
private void AddDynamicMenu(string menuName)
{
// ایجاد منوی اصلی
ToolStripMenuItem newMenu = new ToolStripMenuItem(menuName);
// ایجاد چند آیتم به صورت حلقه
for (int i = 1; i <= 5; i++)
{
ToolStripMenuItem subItem = new ToolStripMenuItem($"آیتم {i}");
subItem.Click += DynamicItem_Click;
subItem.Tag = i; // ذخیره اطلاعات اضافی
newMenu.DropDownItems.Add(subItem);
}
// اضافه کردن به MenuStrip
menuStrip1.Items.Add(newMenu);
}
private void DynamicItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = (ToolStripMenuItem)sender;
MessageBox.Show($"کلیک روی: {item.Text} - اطلاعات: {item.Tag}");
}
2. اضافه کردن پویا به ContextMenuStrip
private void AddDynamicContextItems(string[] itemNames)
{
ContextMenuStrip contextMenu = new ContextMenuStrip();
foreach (string name in itemNames)
{
ToolStripMenuItem item = new ToolStripMenuItem(name);
item.Click += DynamicContext_Click;
contextMenu.Items.Add(item);
}
dataGridView1.ContextMenuStrip = contextMenu;
}
ایجاد کلیدهای میانبر (Shortcut Keys) در سی شارپ
دو روش برای تنظیم کلیدهای میانبر وجود دارد:روش اول — از طریق خصوصیت ShortcutKeys
ToolStripMenuItem saveMenuItem = new ToolStripMenuItem("Save");
saveMenuItem.ShortcutKeys = Keys.Control | Keys.S;
روش دوم — استفاده از حرف & برای Alt میانبر
ToolStripMenuItem fileMenu = new ToolStripMenuItem("&File");
// در این صورت Alt+F منو را فعال میکند
-in-CSHARP.jpg)
مثال کامل: یک ویرایشگر متن ساده در سی شارپ
public partial class SimpleEditor : Form
{
private MenuStrip menuStrip;
private TextBox textBox;
private RichTextBox richTextBox;
public SimpleEditor()
{
InitializeComponents();
CreateMenu();
}
private void CreateMenu()
{
menuStrip = new MenuStrip();
// منوی File
ToolStripMenuItem fileMenu = new ToolStripMenuItem("فایل");
ToolStripMenuItem newItem = new ToolStripMenuItem("جدید");
newItem.ShortcutKeys = Keys.Control | Keys.N;
newItem.Click += (s, e) => richTextBox.Clear();
ToolStripMenuItem openItem = new ToolStripMenuItem("باز کردن");
openItem.ShortcutKeys = Keys.Control | Keys.O;
openItem.Click += OpenItem_Click;
ToolStripMenuItem saveItem = new ToolStripMenuItem("ذخیره");
saveItem.ShortcutKeys = Keys.Control | Keys.S;
saveItem.Click += SaveItem_Click;
fileMenu.DropDownItems.AddRange(new ToolStripItem[] { newItem, openItem, saveItem });
// منوی Edit
ToolStripMenuItem editMenu = new ToolStripMenuItem("ویرایش");
ToolStripMenuItem copyItem = new ToolStripMenuItem("کپی");
copyItem.ShortcutKeys = Keys.Control | Keys.C;
copyItem.Click += (s, e) => richTextBox.Copy();
ToolStripMenuItem pasteItem = new ToolStripMenuItem("چسباندن");
pasteItem.ShortcutKeys = Keys.Control | Keys.V;
pasteItem.Click += (s, e) => richTextBox.Paste();
editMenu.DropDownItems.AddRange(new ToolStripItem[] { copyItem, pasteItem });
menuStrip.Items.AddRange(new ToolStripItem[] { fileMenu, editMenu });
this.Controls.Add(menuStrip);
this.MainMenuStrip = menuStrip;
}
private void OpenItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "Text Files|*.txt|Rich Text Files|*.rtf";
if (ofd.ShowDialog() == DialogResult.OK)
{
richTextBox.LoadFile(ofd.FileName);
}
}
}
private void SaveItem_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "Text Files|*.txt|Rich Text Files|*.rtf";
if (sfd.ShowDialog() == DialogResult.OK)
{
richTextBox.SaveFile(sfd.FileName);
}
}
}
}
نکات مهم و بهترین روشها
| نکته | توضیح |
| نامگذاری | از نامهای معنیدار مثل mnuFileSave یا tsmiSave استفاده کنید |
| جداکنندهها | برای دستهبندی بهتر آیتمها از ToolStripSeparator استفاده کنید |
| فعال/غیرفعال کردن | آیتمهای غیرمرتبط را با Enabled = false غیرفعال کنید |
| نمایش/مخفی کردن | آیتمهای اضافی را با Visible = false مخفی کنید |
| رویداد مشترک | برای آیتمهای مشابه از یک رویداد استفاده کنید و با sender تشخیص دهید |
| MDI | در برنامههای چندفرمی از MdiWindowListItem برای مدیریت پنجرهها استفاده کنید |
جمعبندی
MenuStrip و ContextMenuStrip ابزارهای قدرتمندی برای ایجاد رابط کاربری حرفهای در برنامههای ویندوز فرم هستند:- MenuStrip برای منوی اصلی در بالای فرم استفاده میشود
- ContextMenuStrip برای منوی کلیک راست استفاده میشود
- هر دو از ToolStripMenuItem برای آیتمهای منو استفاده میکنند
- با رویداد Click میتوان به کلیک کاربر پاسخ داد
- امکان ایجاد منوهای چندسطحی، کلیدهای میانبر و اضافه کردن پویا وجود دارد
با رعایت اصول ذکر شده میتوانید منوهای کارآمد و کاربرپسندی برای برنامههای خود طراحی کنید.


کاربران ما
شما هم نظرتون با ما دریاره “ایجاد منو در سی شارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید