"

ایجاد منو در سی شارپ,MenuStrip منوی اصلی فرم در سی شارپ,ContextMenuStrip  منوی کلیک راست در سی شارپ

ایجاد منو در سی شارپ

برای ایجاد منو در سی شارپ از کنترل MenuStrip استفاده می‌شود. با کشیدن آن روی فرم و تایپ متن آیتم‌ها، منوی حرفه‌ای بسازید.

تیم تحریریه
5
0
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;
    }
}



ContextMenuStrip  منوی کلیک راست در سی شارپ


اضافه کردن پویا (داینامیک) منوها در سی شارپ

گاهی نیاز دارید منوها را در زمان اجرا و بر اساس شرایط مختلف ایجاد کنید.

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 منو را فعال می‌کند

 

 

ایجاد کلیدهای میانبر (Shortcut Keys) در سی شارپ

مثال کامل: یک ویرایشگر متن ساده در سی شارپ


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 می‌توان به کلیک کاربر پاسخ داد
  • امکان ایجاد منوهای چندسطحی، کلیدهای میانبر و اضافه کردن پویا وجود دارد

با رعایت اصول ذکر شده می‌توانید منوهای کارآمد و کاربرپسندی برای برنامه‌های خود طراحی کنید.

محصولات مرتبط

کاربران ما

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

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو