Como: Usar Menus Smartphone
Para estar de acordo com a interface de usuário do Smartphone, o .NET Compact Framework impõe o seguinte menu de restrições:
Você só pode ter dois itens de menus de alto nível.
Somente o segundo item de menu de alto nível, no lado direito do formulário, pode ter submenus.
Observe que o .NET Compact estrutura não aplica essas restrições no time de design, mas lança um NotSupportedException em time de execução se seu código não segui-las.
Em tempo de execução, você não pode excluir um item de menu de alto nível.No entanto, você pode conjunto Enabled propriedade de um MenuItemcomo uma seqüência de caracteres vazia ("") para fazer um item de menu aparecer invisível.
O Visual Studio adiciona automaticamente um MainMenu componente ao seu formulário quando você cria aplicativos Smartphone e Pocket PC, mas não o adiciona para formulários filho. The MainMenu componente opera as teclas flexíveis do Smartphone, mas não pode programar sua funcionalidade a menos que você remova o MainMenu componente do formulário. Para obter mais informações sobre como programar teclas flexíveis, consulte Using Smartphone tecla voltar e teclas de software.
Para associar um método a uma seleção de menu, forneça o código para o Click evento para um MenuItem.
Exemplo
Este exemplo define um sistema de menu para um cenário de seleção de mapas:
À esquerda está o Map Help item de menu, que tem código de tratamento de evento que exibe uma caixa de mensagem.
Na direita está o Maps item de menu, que tem dois filhos: My Maps e Add and Remove.Esses filhos tem, respectivamente, cinco e dois filhos próprios seus.
Imports System
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
Private WithEvents mi1 As New MenuItem
Private mi2 As New MenuItem
Private miChildA As New MenuItem
Private miChildB As New MenuItem
Private WithEvents miGrandChildA1 As New MenuItem
Private WithEvents miGrandChildA2 As New MenuItem
Private WithEvents miGrandChildA3 As New MenuItem
Private WithEvents miGrandChildA4 As New MenuItem
Private WithEvents miGrandChildA5 As New MenuItem
Private WithEvents miGrandChildB1 As New MenuItem
Private WithEvents miGrandChildB2 As New MenuItem
Public Sub New()
MyBase.New()
InitializeComponent()
'Define and add menu items.
MainMenu1.MenuItems.Add(mi1)
MainMenu1.MenuItems.Add(mi2)
mi2.MenuItems.Add(miChildA)
mi2.MenuItems.Add(miChildB)
miChildA.MenuItems.Add(miGrandChildA1)
miChildA.MenuItems.Add(miGrandChildA2)
miChildA.MenuItems.Add(miGrandChildA3)
miChildA.MenuItems.Add(miGrandChildA4)
miChildA.MenuItems.Add(miGrandChildA5)
miChildB.MenuItems.Add(miGrandChildB1)
miChildB.MenuItems.Add(miGrandChildB2)
mi1.Text = "Map Help"
mi2.Text = "Maps"
miChildA.Text = "My Maps"
miChildB.Text = "Add and remove"
miGrandChildA1.Text = "Manhattan"
miGrandChildA2.Text = "Bronx"
miGrandChildA3.Text = "Brooklyn"
miGrandChildA4.Text = "Queens"
miGrandChildA5.Text = "Staten Island"
miGrandChildB1.Text = "Add map"
miGrandChildB2.Text = "Delete map"
End Sub
Public Shared Sub Main()
Application.Run(New Form1)
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent()
Me.MainMenu1 = New System.Windows.Forms.MainMenu()
Me.Menu = Me.MainMenu1
Me.Text = "Form1"
End Sub
' The following subroutine handles the
' Click event for the mi1 MenuItem.
Private Sub mi1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mi1.Click
MessageBox.Show("This is just a test.")
End Sub
End Class
using System;
using System.Windows.Forms;
namespace SmartphoneMenus
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
private MenuItem mi1 = new MenuItem();
private MenuItem mi2 = new MenuItem();
private MenuItem miChildA = new MenuItem();
private MenuItem miChildB = new MenuItem();
private MenuItem miGrandChildA1 = new MenuItem();
private MenuItem miGrandChildA2 = new MenuItem();
private MenuItem miGrandChildA3 = new MenuItem();
private MenuItem miGrandChildA4 = new MenuItem();
private MenuItem miGrandChildA5 = new MenuItem();
private MenuItem miGrandChildB1 = new MenuItem();
private MenuItem miGrandChildB2 = new MenuItem();
public Form1()
{
InitializeComponent();
mainMenu1.MenuItems.Add(mi1);
mainMenu1.MenuItems.Add(mi2);
mi2.MenuItems.Add(miChildA);
mi2.MenuItems.Add(miChildB);
miChildA.MenuItems.Add(miGrandChildA1);
miChildA.MenuItems.Add(miGrandChildA2);
miChildA.MenuItems.Add(miGrandChildA3);
miChildA.MenuItems.Add(miGrandChildA4);
miChildA.MenuItems.Add(miGrandChildA5);
miChildB.MenuItems.Add(miGrandChildB1);
miChildB.MenuItems.Add(miGrandChildB2);
// Event handler for the top left menu.
mi1.Click +=new EventHandler(mi1_Click);
// Event handlers for grandchild menu items. This code is commented out
// because this example does not define their event handling methods.
// miGrandChildA1.Click +=new EventHandler(miGrandChildA1_Click);
// miGrandChildB1.Click +=new EventHandler(miGrandChildB1_Click);
// miGrandChildB2.Click +=new EventHandler(miGrandChildB2_Click);
mi1.Text = "Map Help";
mi2.Text = "Maps";
miChildA.Text = "My Maps";
miChildB.Text = "Add and remove";
miGrandChildA1.Text = "Manhattan";
miGrandChildA2.Text = "Bronx";
miGrandChildA3.Text = "Brooklyn";
miGrandChildA4.Text = "Queens";
miGrandChildA5.Text = "Staten Island";
miGrandChildB1.Text = "Add map";
miGrandChildB2.Text = "Remove map";
}
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.Menu = this.mainMenu1;
this.Text = "Form1";
}
static void Main()
{
Application.Run(new Form1());
}
// The following method handles the
// Click event for the mi1 MenuItem.
private void mi1_Click(object sender, EventArgs e)
{
MessageBox.Show("This is just a test.");
}
}
}
Compilando o código
Este exemplo requer referências aos seguintes namespaces: