首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Windows Forms 選單設計完全指南 (9):綜合實戰範例

     編輯:關於C語言

六、綜合實戰範例

在前幾節的基礎上,我們將透過一個完整的 Visual Studio .NET 專案,示範 Windows Forms 選單操作的各個面向。這個範例程式涵蓋了如何以 C# 程式碼動態新增主選單、建立右鍵彈出式選單、為選單項目繫結事件處理方法,以及管理選單項目屬性的存取等核心技術。

關鍵程式碼解析

以下列出部分核心程式碼與註解說明:

private void InitializeComponent() 
{
    // 此處僅列出部分自動產生的初始化程式碼
    this.button4.Text = "刪除彈出選單";
    this.button4.Click += new System.EventHandler(this.button4_Click);
    this.button1.Text = "新增主選單";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    this.button2.Text = "新增彈出選單";
    this.button2.Click += new System.EventHandler(this.button2_Click);
    this.button3.Click += new System.EventHandler(this.button3_Click);
}

private void button1_Click(object sender, System.EventArgs e) 
{
    // 建立選單項目
    MenuItem menuItem1 = new MenuItem();
    MenuItem menuItem2 = new MenuItem();
    MenuItem menuItem3 = new MenuItem();
    MenuItem menuItem4 = new MenuItem();
    MainMenu mainMenu1 = new MainMenu();

    // 設定選單項目顯示文字
    menuItem1.Text = "編輯(&E)";
    menuItem2.Text = "字型大小(&F)";
    menuItem3.Text = "小(&S)";
    
    // 設定預設勾選項目
    menuItem3.Checked = true;
    // 定義快捷鍵 Ctrl+S
    menuItem3.Shortcut = Shortcut.CtrlS;
    
    menuItem4.Text = "大(&L)";
    // 定義快捷鍵 Ctrl+L
    menuItem4.Shortcut = Shortcut.CtrlL;
    // 設定索引位置
    menuItem4.Index = 1;

    // 將子選單加入父選單
    menuItem2.MenuItems.Add(menuItem3);
    menuItem2.MenuItems.Add(menuItem4);
    menuItem1.MenuItems.Add(menuItem2);

    // 為表單新增主選單
    mainMenu1.MenuItems.Add(new MenuItem("檔案(&F)"));
    mainMenu1.MenuItems.Add(menuItem1);
    mainMenu1.MenuItems.Add(new MenuItem("檢視(&V)"));
    mainMenu1.MenuItems.Add(new MenuItem("工具(&T)"));
    mainMenu1.MenuItems.Add(new MenuItem("視窗(&W)"));
    this.Menu = mainMenu1;

    // 為部分選單項目繫結 Click 事件
    this.Menu.MenuItems[0].Click += new System.EventHandler(this.Test);
    menuItem3.Click += new System.EventHandler(this.Test);
    this.Menu.MenuItems[2].Click += new System.EventHandler(this.Test);
}

private void button2_Click(object sender, System.EventArgs e) 
{
    // 為目前表單新增彈出式選單
    this.ContextMenu = new ContextMenu(new MenuItem[] {
        new MenuItem("彈出選單1"), 
        new MenuItem("彈出選單2"), 
        new MenuItem("彈出選單3"), 
        new MenuItem("彈出選單4")
    });
    
    // 設定第一個彈出選單項目的 Click 事件
    this.ContextMenu.MenuItems[0].Click += new System.EventHandler(this.Test);
}

private void button3_Click(object sender, System.EventArgs e) 
{
    try 
    {
        MenuItem temp = new MenuItem();
        // 取得主選單最後一項的參考
        temp = this.Menu.MenuItems[this.Menu.MenuItems.Count - 1];
        // 顯示刪除確認訊息
        MessageBox.Show("即將刪除選單: " + temp.Text, "提示訊息!");
        // 移除主選單項目
        this.Menu.MenuItems.Remove(temp);
    }
    catch 
    {
        MessageBox.Show("操作無效,可能已無選單可供刪除!", "提示訊息");
    }
}

private void button4_Click(object sender, System.EventArgs e) 
{
    try 
    {
        MenuItem temp = new MenuItem();
        // 取得彈出選單最後一項的參考
        temp = this.ContextMenu.MenuItems[this.ContextMenu.MenuItems.Count - 1];
        MessageBox.Show("即將刪除選單: " + temp.Text, "提示訊息!");
        // 移除彈出選單最後一項
        this.ContextMenu.MenuItems.Remove(temp);
    }
    catch 
    {
        MessageBox.Show("操作無效,可能已無選單可供刪除!", "提示訊息");
    }
}

private void Test(object sender, System.EventArgs e) 
{
    // 彈出訊息框顯示觸發事件的選單項目文字
    // 注意此處對 sender 物件的強制型別轉換
    MessageBox.Show("您透過選單: " + ((MenuItem)sender).Text + " 執行本程序!", "提示訊息");
}

程式執行效果

執行該程式將顯示一個最初不包含任何選單的視窗。您可以透過按鈕動態為視窗新增主選單與彈出式選單,也能逐項刪除選單項目。點擊部分選單項目時,會觸發其 Click 事件並顯示對應的提示訊息。執行畫面如下:

選單設計實戰範例執行畫面

總結

透過本系列教學,我們深入了解 .NET 為選單程式設計提供的完整類別體系。掌握這些類別,您可以構建幾乎所有類型的選單應用程式。

  • 主選單與彈出式選單:分別由 MainMenu 與 ContextMenu 類別定義。
  • 選單基本元素:所有選單類型均由 MenuItem 物件構成,無論何種選單,其核心元素皆為 MenuItem 物件。
  • 類別繼承架構:除集合類別外,大多數選單相關類別均繼承自 Menu 基類。Menu 類別提供 MenuItems 集合屬性,讓您能輕鬆管理選單項目(新增、刪除、建立子選單等)。
  • 事件驅動模型:與 .NET 中所有物件一樣,控制選單執行對應程式邏輯,需為選單物件繫結事件處理方法。

最後,在 C# Windows Forms 程式中,選單的使用極具彈性,結構也相當清晰。熟練掌握各類選單類別的關係與使用方法,將讓您在 Windows Forms 選單程式開發中得心應手,遊刃有餘。

— 完 —
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved