Практическое руководство. Связывание контекстного меню с компонентом NotifyIcon в Windows Forms
Примечание.
Хотя элементы управления MenuStrip и ContextMenuStrip заменяют элементы управления MainMenu и ContextMenu предыдущих версий и расширяют их функциональные возможности, элементы управления MainMenu и ContextMenu сохраняются для обратной совместимости и возможного применения в будущем.
Компонент NotifyIcon отображает значок в области состояния на панели задач. Как правило, приложения позволяют щелкнуть этот значок правой кнопкой мыши для отправки команд в приложение, которое оно представляет. Связав компонент ContextMenu с компонентом NotifyIcon, вы можете добавить эту функцию в приложения.
Примечание.
Если вы хотите, чтобы приложение было свернуто при запуске при отображении экземпляра компонента NotifyIcon на панели задач, задайте для свойства WindowState основной формы значение Minimized и убедитесь, что свойство Visible компонента NotifyIcon имеет значение true
.
Связывание контекстного меню с компонентом NotifyIcon во время разработки
Добавьте компонент NotifyIcon в форму и задайте важные свойства, такие как Icon и Visible.
Дополнительные сведения см. в статье Практическое руководство. Добавление значков приложения на панель задач с помощью компонента NotifyIcon в Windows Forms.
Добавьте компонент ContextMenu в форму Windows.
Добавьте пункты меню в контекстное меню, представляющие команды, которые нужно сделать доступными во время выполнения. Также рекомендуется добавить улучшения меню в эти пункты меню, такие как клавиши доступа.
Присвойте свойству ContextMenu компонента NotifyIcon добавленное контекстное меню.
Если задано это свойство, контекстное меню будет отображаться при щелчке значка на панели задач.
Связывание контекстного меню с компонентом NotifyIcon программным способом
Создайте экземпляр класса NotifyIcon и класса ContextMenu с любыми параметрами свойств, необходимыми для приложения (свойства Icon и Visible компонента NotifyIcon, пункты меню для компонента ContextMenu).
Присвойте свойству ContextMenu компонента NotifyIcon добавленное контекстное меню.
Если задано это свойство, контекстное меню будет отображаться при щелчке значка на панели задач.
Примечание.
В следующем примере кода создается базовая структура меню. Вам потребуется настроить пункты меню для разрабатываемого приложения. Кроме того, необходимо написать код для обработки событий 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();
См. также
.NET Desktop feedback