如何:将快捷菜单与 Windows 窗体 NotifyIcon 组件关联
注意
虽然 MenuStrip 和 ContextMenuStrip 取代了以前版本的 MainMenu 和 ContextMenu 控件并向其中添加了功能,但也可选择保留 MainMenu 和 ContextMenu 以备后向兼容和供将来使用。
NotifyIcon 组件会在任务栏的状态通知区域中显示一个图标。 通常,应用程序支持右键单击此图标,将命令发送到它所代表的应用程序。 通过将 ContextMenu 组件与 NotifyIcon 组件关联,可以将此功能添加到应用程序。
注意
如果希望在启动时最小化应用程序,同时在任务栏中显示 NotifyIcon 组件的实例,请将主窗体的 WindowState 属性设置为 Minimized 并确保设置了 NotifyIcon 组件的 Visible 属性设置为 true
。
在设计时将快捷菜单与 NotifyIcon 组件相关联
将 NotifyIcon 组件添加到窗体中,并设置重要属性,例如 Icon 和 Visible 属性。
有关详细信息,请参阅如何:使用 Windows 窗体 NotifyIcon 组件向任务栏添加应用程序图标。
将 ContextMenu 组件添加到 Windows 窗体。
将菜单项添加到表示要在运行时可用的命令的快捷菜单中。 这也是向这些菜单项(如访问键)添加菜单增强功能的好时机。
将 NotifyIcon 组件的 ContextMenu 属性设置为添加的快捷菜单。
设置此属性后,单击任务栏上的图标时,将显示快捷菜单。
以编程方式将快捷菜单与 NotifyIcon 组件相关联
创建 NotifyIcon 类和 ContextMenu 类的实例,使用应用程序所需的任何属性设置(NotifyIcon 组件的 Icon 和 Visible 属性,ContextMenu 组件的菜单项)。
将 NotifyIcon 组件的 ContextMenu 属性设置为添加的快捷菜单。
设置此属性后,单击任务栏上的图标时,将显示快捷菜单。
注意
以下代码示例会创建基本菜单结构。 你需要将菜单选项自定义为适合你开发的应用程序的菜单选项。 此外,还需要编写代码来处理这些菜单项的 Click 事件。
Public ContextMenu1 As New ContextMenu Public NotifyIcon1 As New NotifyIcon Public Sub CreateIconMenuStructure() ' Add menu items to shortcut menu. ContextMenu1.MenuItems.Add("&Open Application") ContextMenu1.MenuItems.Add("S&uspend Application") ContextMenu1.MenuItems.Add("E&xit") ' Set properties of NotifyIcon component. NotifyIcon1.Icon = New System.Drawing.Icon _ (System.Environment.GetFolderPath _ (System.Environment.SpecialFolder.Personal) _ & "\Icon.ico") NotifyIcon1.Text = "Right-click me!" NotifyIcon1.Visible = True NotifyIcon1.ContextMenu = ContextMenu1 End Sub
public NotifyIcon notifyIcon1 = new NotifyIcon();
public ContextMenu contextMenu1 = new ContextMenu();
public void createIconMenuStructure()
{
// Add menu items to shortcut menu.
contextMenu1.MenuItems.Add("&Open Application");
contextMenu1.MenuItems.Add("S&uspend Application");
contextMenu1.MenuItems.Add("E&xit");
// Set properties of NotifyIcon component.
notifyIcon1.Icon = new System.Drawing.Icon
(System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal)
+ @"\Icon.ico");
notifyIcon1.Visible = true;
notifyIcon1.Text = "Right-click me!";
notifyIcon1.Visible = true;
notifyIcon1.ContextMenu = contextMenu1;
}
public:
System::Windows::Forms::NotifyIcon ^ notifyIcon1;
System::Windows::Forms::ContextMenu ^ contextMenu1;
void createIconMenuStructure()
{
// Add menu items to shortcut menu.
contextMenu1->MenuItems->Add("&Open Application");
contextMenu1->MenuItems->Add("S&uspend Application");
contextMenu1->MenuItems->Add("E&xit");
// Set properties of NotifyIcon component.
notifyIcon1->Icon = gcnew System::Drawing::Icon
(String::Concat(System::Environment::GetFolderPath
(System::Environment::SpecialFolder::Personal),
"\\Icon.ico"));
notifyIcon1->Text = "Right-click me!";
notifyIcon1->Visible = true;
notifyIcon1->ContextMenu = contextMenu1;
}
注意
必须初始化 notifyIcon1
和 contextMenu1,
,可通过在窗体的构造函数中包含以下语句来执行此操作:
notifyIcon1 = gcnew System::Windows::Forms::NotifyIcon();
contextMenu1 = gcnew System::Windows::Forms::ContextMenu();