Windows 窗體支持菜單和上下文菜單。主菜單在菜單欄上顯示,菜單欄位於窗體標題欄的緊下方。菜單欄包含用於將相關子菜單項分組的頂級菜單項。例如,通過單擊“文件”頂級菜單項,可以顯示與文件操作相關的菜單項。菜單項通常顯示爲應用程序的命令(如“新建”和“打開”),但是它們也可以顯示爲分隔條和子菜單項。可以在菜單項的旁邊顯示選中標記,以顯示應用程序中命令的狀態或功能的狀態。在 Windows 窗體中,主菜單由 MainMenu 控件表示。
可爲窗體的特定控件或區域顯示上下文菜單。通常通過單擊鼠標右鍵訪問它們。在 Windows 窗體中,上下文菜單由 ContextMenu 控件表示。
ContextMenu 和 MainMenu 從 Menu 派生。它們共享許多屬性、方法和事件。
下面的代碼演示如何向窗體添加 MainMenu。
C# source:
MainMenu mainMenu = new MainMenu();
this.Menu = mainMenu;
VB source:
Dim mainMenu As New MainMenu
Me.Menu = mainMenu
向控件添加上下文菜單
下面的代碼演示如何創建 ContextMenu 並將其分配到控件。
C#
ContextMenu label1ContextMenu = new ContextMenu();
Label label1 = new Label();
label1.ContextMenu = label1ContextMenu;
VB
Dim label1ContextMenu As New ContextMenu
Dim label1 As New Label
label1.ContextMenu = label1ContextMenu
添加菜單項
在下面的示例中,將 File 菜單項添加到 MainMenu 中。File 菜單項包含名爲 Open 和 Exit 的子菜單項。
C#
//Add File Menu
MenuItem miFile = mainMenu.MenuItems.Add("&File");
miFile.MenuItems.Add(new MenuItem("&Open..."));
miFile.MenuItems.Add("-"); // Gives us a seperator
miFile.MenuItems.Add(new MenuItem("E&xit"));
VB
'Add File Menu
Dim miFile As MenuItem = mainMenu.MenuItems.Add("&File")
miFile.MenuItems.Add(new MenuItem("&Open..."))
miFile.MenuItems.Add("-") ' Gives us a seperator
miFile.MenuItems.Add(new MenuItem("E&xit"))
下面的代碼演示如何爲在前面代碼示例中創建的 Open 和 Exit 菜單項處理 Click 事件。
C#
....
//Add File Menu
MenuItem miFile = mainMenu.MenuItems.Add("&File");
miFile.MenuItems.Add(new MenuItem("&Open...", new EventHandler(this.FileOpen_Clicked), Shortcut.CtrlO));
miFile.MenuItems.Add("-"); // Gives us a seperator
miFile.MenuItems.Add(new MenuItem("E&xit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));
....
//File->Exit Menu item handler
private void FileExit_Clicked(object sender, System.EventArgs e) {
this.Close();
}
//File->Open Menu item handler
private void FileOpen_Clicked(object sender, System.EventArgs e) {
MessageBox.Show("And why would this open a file?");
}
....
VB
....
'Add File Menu
Dim miFile As MenuItem = mainMenu.MenuItems.Add("&File")
miFile.MenuItems.Add(new MenuItem("&Open...", new EventHandler(AddressOf Me.FileOpen_Clicked)))
miFile.MenuItems.Add("-") ' Gives us a seperator
miFile.MenuItems.Add(new MenuItem("E&xit", new EventHandler(AddressOf Me.FileExit_Clicked)))
....
'File->Exit Menu item handler
Private Sub FileExit_Clicked(sender As object, e As System.EventArgs)
Me.Close
End Sub
'File->Open Menu item handler
Private Sub FileOpen_Clicked(sender As object, e As System.EventArgs)
MessageBox.Show("And why would this open a file?")
End Sub
....
添加子菜單
下面的示例演示如何創建子菜單。
C#
//Add Format Menu
MenuItem miFormat = mainMenu.MenuItems.Add("F&ormat");
//Font Face sub-menu
mmiSansSerif = new MenuItem("&1. " + sansSerifFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
mmiSerif = new MenuItem("&2. " + serifFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
mmiMonoSpace = new MenuItem("&3. " + monoSpaceFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
miFormat.MenuItems.Add( "Font &Face",
(new MenuItem[]{ mmiSansSerif, mmiSerif, mmiMonoSpace })
);
//Font Size sub-menu
MenuItem miSmall = new MenuItem("&Small", new EventHandler(this.FormatSize_Clicked));
MenuItem miMedium = new MenuItem("&Medium", new EventHandler(this.FormatSize_Clicked));
MenuItem miLarge = new MenuItem("&Large", new EventHandler(this.FormatSize_Clicked));
miFormat.MenuItems.Add( "Font &Size"
, new EventHandler(this.FormatSize_Clicked)
, (new MenuItem[]{ miSmall, miMedium, miLarge }));
VB
'Add Format Menu
Dim miFormat As MenuItem = mainMenu.MenuItems.Add("F&ormat")
'Font Face sub-menu
mmiSansSerif = New MenuItem("&1. " & sansSerifFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
mmiSerif = New MenuItem("&2. " & serifFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
mmiMonoSpace = New MenuItem("&3. " & monoSpaceFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
miFormat.MenuItems.Add("Font &Face" _
, (New MenuItem() {mmiSansSerif, mmiSerif, mmiMonoSpace}))
'Font Size sub-menu
mmiSmall = New MenuItem("&Small", AddressOf Me.FormatSize_Clicked)
mmiMedium = New MenuItem("&Medium", AddressOf Me.FormatSize_Clicked)
mmiLarge = New MenuItem("&Large", AddressOf Me.FormatSize_Clicked)
miFormat.MenuItems.Add( "Font &Size" _
, New EventHandler(AddressOf Me.FormatSize_Clicked) _
, (New MenuItem(){ mmiSmall, mmiMedium, mmiLarge }) _
)
添加默認菜單項
下面的示例演示如何指定默認菜單項。
C#
//Add Format Menu
mmiSansSerif = new MenuItem("&1. " + sansSerifFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
mmiSansSerif.DefaultItem = true ;
VB
'Font Face sub-menu
mmiSansSerif = New MenuItem("&1. " & sansSerifFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
mmiSansSerif.DefaultItem = True
向菜單項添加選中標記
下面的示例演示如何在菜單項的旁邊顯示選中標記。該代碼還演示如何跟蹤選中了哪個項。
C#
//Add Format Menu
MenuItem miMedium = new MenuItem("&Medium", new EventHandler(this.FormatSize_Clicked));
miMedium.Checked = true;
....
private void FormatSize_Clicked(object sender, System.EventArgs e) {
MenuItem miClicked = (MenuItem)sender;
// Uncheck old selection
miMainFormatSizeChecked.Checked = false;
//Do Menu item action and make a new selection
....
miMainFormatSizeChecked = miSmall;
....
// Check the new selection
miMainFormatSizeChecked.Checked = true;
}
VB
' Add Format Menu
Dim miMedium As MenuItem = new MenuItem("&Medium", AddressOf Me.FormatSize_Clicked)
miMedium.Checked = True
....
Private Sub FormatSize_Clicked(sender As object, e As System.EventArgs)
Dim miClicked As MenuItem = CType(sender, MenuItem)
' Uncheck old selection
miMainFormatSizeChecked.Checked = False
' Do Menu item action and make a new selection
....
miMainFormatSizeChecked = miSmall
....
' Check the new selection
miMainFormatSizeChecked.Checked = True
End Sub
克隆菜單
在很多情況下,控件的上下文菜單是主菜單的子集。無法將同樣的菜單項添加到多個菜單中,但是可以克隆菜單項或菜單項集合。下面的代碼演示如何克隆前面創建的 Format 菜單,並將其添加到 Label 的上下文菜單中。
C#
//Add Format to label context menu
//Note have to add a clone because menus can't belong to 2 parents
label1ContextMenu.MenuItems.Add(miFormat.CloneMenu());
VB
'Add Format to label context menu
'Note have to add a clone because menus can't belong to 2 parents
label1ContextMenu.MenuItems.Add(miFormat.CloneMenu)
菜單合併
在 MDI 應用程序中,每個 MDI 子窗體的主菜單都合併到 MDI 父窗體的主菜單中。
菜單示例
Imports System Imports System.ComponentModel
Imports System.Drawing
Imports System.Drawing.Text
Imports System.Windows.Forms
Namespace Microsoft.Samples.WinForms.VB.Menus
Public Class Menus
Inherits System.Windows.Forms.Form
Private Class FontSizes
Public Shared Small As Single = 8F
Public Shared Medium As Single = 12F
Public Shared Large As Single = 24F
End Class
'字體外觀和大小
Private fontFace As String = "Arial"
Private fontSize As Single = FontSizes.Medium
'用來跟蹤被選中和未被選中的菜單項
Private mmiSansSerif As MenuItem
Private mmiSerif As MenuItem
Private mmiMonoSpace As MenuItem
Private mmiSmall As MenuItem
Private mmiMedium As MenuItem
Private mmiLarge As MenuItem
Private cmiSansSerif As MenuItem
Private cmiSerif As MenuItem
Private cmiMonoSpace As MenuItem
Private cmiSmall As MenuItem
Private cmiMedium As MenuItem
Private cmiLarge As MenuItem
Private miMainFormatFontChecked As MenuItem
Private miMainFormatSizeChecked As MenuItem
Private miContextFormatFontChecked As MenuItem
Private miContextFormatSizeChecked As MenuItem
Private currentFontFamily As FontFamily
Private monoSpaceFontFamily As FontFamily
Private sansSerifFontFamily As FontFamily
Private serifFontFamily As FontFamily
Public Sub New()
MyBase.New()
Menus = Me
'此調用是 Windows 窗體設計器所必需的。
InitializeComponent()
monoSpaceFontFamily = new FontFamily (GenericFontFamilies.Monospace)
sansSerifFontFamily = new FontFamily (GenericFontFamilies.SansSerif)
serifFontFamily = new FontFamily (GenericFontFamilies.Serif)
currentFontFamily = sansSerifFontFamily
label1.Font = New Font(fontFace, fontSize)
'添加“文件”菜單
Dim miFile As MenuItem = MainMenu.MenuItems.Add("文件(&F)")
miFile.MenuItems.Add(New MenuItem("打開(&O)...", New EventHandler(AddressOf Me.FileOpen_Clicked), Shortcut.CtrlO))
miFile.MenuItems.Add("-") ' 提供一個分隔符
miFile.MenuItems.Add(New MenuItem("退出(&X)", New EventHandler(AddressOf Me.FileExit_Clicked), Shortcut.CtrlX))
'添加“格式”菜單
Dim miFormat As MenuItem = MainMenu.MenuItems.Add("格式(&O)")
'“字體外觀”子菜單
mmiSansSerif = New MenuItem("1.(&1)" & sansSerifFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
mmiSansSerif.Checked = True
mmiSansSerif.DefaultItem = True
mmiSerif = New MenuItem("2. (&2)" & serifFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
mmiMonoSpace = New MenuItem("3.(&3)" & monoSpaceFontFamily.Name, New EventHandler(AddressOf Me.FormatFont_Clicked))
miFormat.MenuItems.Add("字體外觀(&F)" _
, (New MenuItem() {mmiSansSerif, mmiSerif, mmiMonoSpace}))
'“字體大小”子菜單
mmiSmall = New MenuItem("小(&S)", New EventHandler(AddressOf Me.FormatSize_Clicked))
mmiMedium = New MenuItem("中(&M)", New EventHandler(AddressOf Me.FormatSize_Clicked))
mmiMedium.Checked = True
mmiMedium.DefaultItem = True
mmiLarge = New MenuItem("大(&L)", New EventHandler(AddressOf Me.FormatSize_Clicked))
miFormat.MenuItems.Add("字體大小(&S)" _
, (New MenuItem() {mmiSmall, mmiMedium, mmiLarge}))
'向標籤上下文菜單添加格式
'注意,因爲菜單不能屬於兩個父級,所以必須添加一個複本
label1ContextMenu.MenuItems.Add(miFormat.CloneMenu)
' 設置上下文菜單項 - 使用它們選中和取消選中項
cmiSansSerif = label1ContextMenu.MenuItems(0).MenuItems(0).MenuItems(0)
cmiSerif = label1ContextMenu.MenuItems(0).MenuItems(0).MenuItems(1)
cmiMonoSpace = label1ContextMenu.MenuItems(0).MenuItems(0).MenuItems(2)
cmiSmall = label1ContextMenu.MenuItems(0).MenuItems(1).MenuItems(0)
cmiMedium = label1ContextMenu.MenuItems(0).MenuItems(1).MenuItems(1)
cmiLarge = label1ContextMenu.MenuItems(0).MenuItems(1).MenuItems(2)
'用這些來跟蹤被選中的菜單項
'因爲有菜單和上下文菜單,所以這會比較複雜
miMainFormatFontChecked = mmiSansSerif
miMainFormatSizeChecked = mmiMedium
miContextFormatFontChecked = cmiSansSerif
miContextFormatSizeChecked = cmiMedium
End Sub
'“文件”->“退出”菜單項處理程序
Private Sub FileExit_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
'“文件”->“打開”菜單項處理程序
Private Sub FileOpen_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
MessageBox.Show("爲什麼這會打開文件?")
End Sub
'“格式”->“字體”菜單項處理程序
Private Sub FormatFont_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
Dim miClicked As MenuItem = CType(sender, MenuItem)
miMainFormatFontChecked.Checked = False
miContextFormatFontChecked.Checked = False
If miClicked Is mmiSansSerif Or miClicked Is cmiSansSerif Then
miMainFormatFontChecked = mmiSansSerif
miContextFormatFontChecked = cmiSansSerif
currentFontFamily = sansSerifFontFamily
ElseIf miClicked Is mmiSerif Or miClicked Is cmiSerif Then
miMainFormatFontChecked = mmiSerif
miContextFormatFontChecked = cmiSerif
currentFontFamily = serifFontFamily
Else
miMainFormatFontChecked = mmiMonoSpace
miContextFormatFontChecked = cmiMonoSpace
currentFontFamily = monoSpaceFontFamily
End If
miMainFormatFontChecked.Checked = True
miContextFormatFontChecked.Checked = True
label1.Font = New Font(currentFontFamily, fontSize)
End Sub
'“格式”->“大小”菜單項處理程序
Private Sub FormatSize_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
Dim miClicked As MenuItem = CType(sender, MenuItem)
miMainFormatSizeChecked.Checked = False
miContextFormatSizeChecked.Checked = False
Dim fontSizeString As String = miClicked.Text
If (fontSizeString = "小(&S)") Then
miMainFormatSizeChecked = mmiSmall
miContextFormatSizeChecked = cmiSmall
fontSize = FontSizes.Small
ElseIf (fontSizeString = "大(&L)") Then
miMainFormatSizeChecked = mmiLarge
miContextFormatSizeChecked = cmiLarge
fontSize = FontSizes.Large
Else
miMainFormatSizeChecked = mmiMedium
miContextFormatSizeChecked = cmiMedium
fontSize = FontSizes.Medium
End If
miMainFormatSizeChecked.Checked = True
miContextFormatSizeChecked.Checked = True
label1.Font = New Font(currentFontFamily, fontSize)
End Sub
'窗體重寫 dispose 以清理組件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
#Region " Windows 窗體設計器生成的代碼 "
'Windows 窗體設計器所必需的
Private components As System.ComponentModel.Container
Private WithEvents label1 As System.Windows.Forms.Label
Private WithEvents mainMenu As System.Windows.Forms.MainMenu
Private label1ContextMenu As System.Windows.Forms.ContextMenu
Private WithEvents Menus As System.Windows.Forms.Form
'注意:下面的過程是 Windows 窗體設計器所必需的
'可以使用 Windows 窗體設計器修改它。
'不要使用代碼編輯器修改它。
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.mainMenu = New System.Windows.Forms.MainMenu()
Me.label1 = New System.Windows.Forms.Label()
Me.label1ContextMenu = New System.Windows.Forms.ContextMenu()
Me.Text = "Menus 'R Us"
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.Menu = mainMenu
Me.ClientSize = New System.Drawing.Size(392, 117)
label1.BackColor = System.Drawing.Color.LightSteelBlue
label1.Location = New System.Drawing.Point(16, 24)
label1.TabIndex = 0
label1.Anchor = CType(13, System.Windows.Forms.AnchorStyles)
label1.Size = New System.Drawing.Size(360, 50)
label1.Text = "Right Click on me - I have a context menu!"
label1.ContextMenu = label1ContextMenu
Me.Controls.Add(label1)
End Sub
#End Region
'運行應用程序
'應用程序的主入口點
<STAThread()> Shared Sub Main()
System.Windows.Forms.Application.Run(New Menus())
End Sub
End Class
End Namespace
C#
namespace Microsoft.Samples.WinForms.Cs.Menus {
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
public class Menus : System.Windows.Forms.Form {
/// <summary>
/// 必需的設計器變量。
/// </summary>
private System.ComponentModel.Container components;
protected internal System.Windows.Forms.Label label1;
protected internal System.Windows.Forms.MainMenu mainMenu;
protected internal System.Windows.Forms.ContextMenu label1ContextMenu;
// 註釋此結構以在 WinForms 設計器中查看 menus.cs。
// 記住不要在設計器中編輯菜單。這樣會與
// 手寫菜單代碼衝突。記住在完成此操作
// 後取消註釋此結構。
private struct FontSizes {
public static float Small = 8f;
public static float Medium = 12f;
public static float Large = 24f;
}
//字體外觀和大小
private float fontSize = FontSizes.Medium;
//用來跟蹤被選中和未被選中的菜單項
private MenuItem mmiSansSerif;
private MenuItem mmiSerif;
private MenuItem mmiMonoSpace;
private MenuItem mmiSmall;
private MenuItem mmiMedium;
private MenuItem mmiLarge;
private MenuItem cmiSansSerif;
private MenuItem cmiSerif;
private MenuItem cmiMonoSpace;
private MenuItem cmiSmall;
private MenuItem cmiMedium;
private MenuItem cmiLarge;
private MenuItem miMainFormatFontChecked ;
private MenuItem miMainFormatSizeChecked ;
private MenuItem miContextFormatFontChecked ;
private MenuItem miContextFormatSizeChecked ;
private FontFamily currentFontFamily ;
private FontFamily monoSpaceFontFamily;
private FontFamily sansSerifFontFamily;
private FontFamily serifFontFamily;
public Menus() {
//
// Windows 窗體設計器支持所必需的
//
InitializeComponent();
// 初始化字體 - 使用一般字體以避免在操作
// 系統的不同版本之間出現問題
monoSpaceFontFamily = new FontFamily (GenericFontFamilies.Monospace);
sansSerifFontFamily = new FontFamily (GenericFontFamilies.SansSerif);
serifFontFamily = new FontFamily (GenericFontFamilies.Serif);
currentFontFamily = sansSerifFontFamily;
//添加“文件”菜單
MenuItem miFile = mainMenu.MenuItems.Add("文件(&F)");
miFile.MenuItems.Add(new MenuItem("打開(&O)...", new EventHandler(this.FileOpen_Clicked), Shortcut.CtrlO));
miFile.MenuItems.Add("-"); // 提供一個分隔符
miFile.MenuItems.Add(new MenuItem("退出(&X)", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));
//添加“格式”菜單
MenuItem miFormat = mainMenu.MenuItems.Add("格式(&O)");
//“字體外觀”子菜單
mmiSansSerif = new MenuItem("1.(&1)" + sansSerifFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
mmiSansSerif.Checked = true ;
mmiSansSerif.DefaultItem = true ;
mmiSerif = new MenuItem("2. (&2)" + serifFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
mmiMonoSpace = new MenuItem("3.(&3)" + monoSpaceFontFamily.Name, new EventHandler(this.FormatFont_Clicked));
miFormat.MenuItems.Add( "字體外觀(&F)",
(new MenuItem[]{ mmiSansSerif, mmiSerif, mmiMonoSpace })
);
//“字體大小”子菜單
mmiSmall = new MenuItem("小(&S)", new EventHandler(this.FormatSize_Clicked));
mmiMedium = new MenuItem("中(&M)", new EventHandler(this.FormatSize_Clicked));
mmiMedium.Checked = true ;
mmiMedium.DefaultItem = true ;
mmiLarge = new MenuItem("大(&L)", new EventHandler(this.FormatSize_Clicked));
miFormat.MenuItems.Add( "字體大小(&S)",
(new MenuItem[]{ mmiSmall, mmiMedium, mmiLarge })
);
//向標籤上下文菜單添加格式
//注意,因爲菜單不能屬於兩個父級,所以必須添加一個複本
label1ContextMenu.MenuItems.Add(miFormat.CloneMenu());
// 設置上下文菜單項 - 使用它們選中和取消選中項
cmiSansSerif = label1ContextMenu.MenuItems[0].MenuItems[0].MenuItems[0];
cmiSerif = label1ContextMenu.MenuItems[0].MenuItems[0].MenuItems[1];
cmiMonoSpace = label1ContextMenu.MenuItems[0].MenuItems[0].MenuItems[2];
cmiSmall = label1ContextMenu.MenuItems[0].MenuItems[1].MenuItems[0];
cmiMedium = label1ContextMenu.MenuItems[0].MenuItems[1].MenuItems[1];
cmiLarge = label1ContextMenu.MenuItems[0].MenuItems[1].MenuItems[2];
//用這些來跟蹤被選中的菜單項
//因爲有菜單和上下文菜單,所以這會比較複雜
miMainFormatFontChecked = mmiSansSerif;
miMainFormatSizeChecked = mmiMedium;
miContextFormatFontChecked = cmiSansSerif;
miContextFormatSizeChecked = cmiMedium;
}
//“文件”->“退出”菜單項處理程序
private void FileExit_Clicked(object sender, System.EventArgs e) {
this.Close();
}
//“文件”->“打開”菜單項處理程序
private void FileOpen_Clicked(object sender, System.EventArgs e) {
MessageBox.Show("爲什麼這會打開文件?");
}
//“格式”->“字體”菜單項處理程序
private void FormatFont_Clicked(object sender, System.EventArgs e) {
MenuItem miClicked = (MenuItem)sender;
miMainFormatFontChecked.Checked = false;
miContextFormatFontChecked.Checked = false;
if ( miClicked == mmiSansSerif || miClicked == cmiSansSerif ) {
miMainFormatFontChecked = mmiSansSerif;
miContextFormatFontChecked = cmiSansSerif;
currentFontFamily = sansSerifFontFamily;
} else if (miClicked == mmiSerif || miClicked == cmiSerif) {
miMainFormatFontChecked = mmiSerif;
miContextFormatFontChecked = cmiSerif;
currentFontFamily = serifFontFamily;
} else {
miMainFormatFontChecked = mmiMonoSpace;
miContextFormatFontChecked = cmiMonoSpace;
currentFontFamily = monoSpaceFontFamily;
}
miMainFormatFontChecked.Checked = true;
miContextFormatFontChecked.Checked = true;
label1.Font = new Font(currentFontFamily, fontSize);
}
//“格式”->“大小”菜單項處理程序
private void FormatSize_Clicked(object sender, System.EventArgs e) {
MenuItem miClicked = (MenuItem)sender;
miMainFormatSizeChecked.Checked = false;
miContextFormatSizeChecked.Checked = false;
string fontSizeString = ((MenuItem)sender).Text;
if (fontSizeString == "小(&S)") {
miMainFormatSizeChecked = mmiSmall;
miContextFormatSizeChecked = cmiSmall;
fontSize = FontSizes.Small ;
} else if (fontSizeString == "大(&L)") {
miMainFormatSizeChecked = mmiLarge;
miContextFormatSizeChecked = cmiLarge;
fontSize = FontSizes.Large ;
} else {
miMainFormatSizeChecked = mmiMedium;
miContextFormatSizeChecked = cmiMedium;
fontSize = FontSizes.Medium ;
}
miMainFormatSizeChecked.Checked = true;
miContextFormatSizeChecked.Checked = true;
label1.Font = new Font(currentFontFamily, fontSize);
}
/// <summary>
/// 清理正在使用的所有資源。
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// 設計器支持所必需的方法,不要使用
/// 代碼編輯器修改此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container ();
this.mainMenu = new System.Windows.Forms.MainMenu ();
this.label1 = new System.Windows.Forms.Label ();
this.label1ContextMenu = new System.Windows.Forms.ContextMenu ();
this.Text = "Menus 'R Us";
this.AutoScaleBaseSize = new System.Drawing.Size (5, 13);
this.Menu = this.mainMenu;
this.ClientSize = new System.Drawing.Size (392, 117);
label1.BackColor = System.Drawing.Color.LightSteelBlue;
label1.Location = new System.Drawing.Point (16, 24);
label1.TabIndex = 0;
label1.Anchor = (System.Windows.Forms.AnchorStyles) 13;
label1.Size = new System.Drawing.Size (360, 50);
label1.Text = "Right Click on me - I have a context menu!";
label1.ContextMenu = this.label1ContextMenu;
this.Controls.Add (this.label1);
}
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
public static void Main(string[] args) {
Application.Run(new Menus());
}
}
}