我有一個WPF應用程序,使用winforms NotifyIcon
在托盤上顯示上下文菜單。當我執行以下步驟時,圖標消失。在托盤上的通知圖標什麼導致我的NotifyIcon在Alt + F4之後隱藏?
- 右鍵
- 選擇顯示一個模式對話框
- 上下文菜單項辭退該對話框
- 按Alt + F4
這裏是一個最小的例子,我看到這個錯誤。
XAML:
<Window x:Class="killtrayicon.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:killtrayicon"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="button" Click="Button_Click"/>
</Grid>
</Window>
後面的代碼:
namespace killtrayicon
{
using System.Windows;
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private System.Windows.Forms.NotifyIcon notifyIcon = new System.Windows.Forms.NotifyIcon();
public MainWindow()
{
InitializeComponent();
notifyIcon.Icon = Properties.Resources.icon;
notifyIcon.Visible = true;
notifyIcon.Text = "test";
notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu();
notifyIcon.ContextMenu.MenuItems.Add("click", (s, e) =>
{
MessageBox.Show("menu");
});
}
private void Button_Click(object sender, RoutedEventArgs e)
{
notifyIcon.Icon = Properties.Resources.icon;
}
}
}
用鼠標點擊主窗口中的重置按鈕的圖標和通知圖標會再次出現。所以通知圖標本身並未被刪除。檢查NotifyIcon
的實例顯示它在重置圖標前仍然可見,並且Icon
屬性指向我資源中的有效ICO。
我懷疑上下文菜單是問題,因爲如果我通過單擊托盤圖標顯示模式對話框,則不會發生此問題。
如何獲取NotifyIcon不響應Alt + F4?
編輯:此問題與重複,但該問題沒有示例代碼來重現問題(無效鏈接),提交給Microsoft的問題鏈接也是一個死鏈接,並且沒有可接受的答案實際解決方案
Wow a downvote for a better worded question without dead link? – cppguy