标签: notifyicon

即使应用程序关闭后,NotifyIcon仍保留在托盘中,但在鼠标悬停时消失

关于SO的问题有很多疑问.解决方案是设置

notifyIcon.icon = nullDispose在FormClosing事件中调用它.

在我的应用程序中,没有这样的表单,但有通知图标更新事件.在创作时,我隐藏了我的形式并制作了ShowInTaskbar财产false.因此,我不能有"FormClosing"或"FormClosed"事件.

如果此应用程序获取退出事件,则调用Process.GetCurrentProcess().Kill();退出.

notifyIcon.icon = null在杀戮之前添加了Dispose,但仍然将图标保留为任务栏,直到我将鼠标悬停在它上面.

编辑:如果我认为这种行为是由于调用GetCurrentProcess().Kill(),是否有任何优雅的方式退出应用程序,这将清除所有资源并从系统托盘中删除图标.

c# notifyicon

64
推荐指数
5
解决办法
5万
查看次数

调用NotifyIcon的上下文菜单

我想让它左键单击NotifyIcon也会导致上下文菜单(使用ContextMenuStrip属性设置)也打开.我怎么做到这一点?我是否必须自己处理Click并找出定位?
编辑:使用trayIcon.ContextMenuStrip.Show()显示菜单结果是一些不良行为:

菜单未显示在同一位置,就像右键单击NotifyIcon一样(看起来您无法将x和y坐标设置为任务栏所在的位置,至少在我正在运行的Windows 7上).它将显示在任务栏上方(不是很大的交易,但一致性会很好).

显示菜单时,任务栏中会添加一个额外的图标.

单击菜单以外的其他位置不会关闭它(如果右键单击以显示上下文菜单,则单击其他位置会自动关闭上下文菜单).

是否可以只调用菜单,但内置的右键单击处理程序正在执行此操作?

c# notifyicon winforms

40
推荐指数
1
解决办法
3万
查看次数

显示气球通知

我正在尝试使用以下代码来显示气球通知.我已经验证它是使用断点执行的.它也没有显示任何错误.

我应该怎么做来调试这个,因为它不会抛出错误而不显示气球?

private void showBalloon(string title, string body)
{
    NotifyIcon notifyIcon = new NotifyIcon();
    notifyIcon.Visible = true;

    if (title != null)
    {
        notifyIcon.BalloonTipTitle = title;
    }

    if (body != null)
    {
        notifyIcon.BalloonTipText = body;
    }

    notifyIcon.ShowBalloonTip(30000);
}
Run Code Online (Sandbox Code Playgroud)

.net c# notifyicon winforms notification-area

37
推荐指数
2
解决办法
8万
查看次数

如何将WinForms应用程序最小化到通知区域?

我想将C#WinForms应用程序最小化到系统托盘.我试过这个:

单击按钮时应用程序最小化到系统托盘?.我第一次最小化它,它在屏幕上找不到 - 任务栏/任务栏/托盘上方.

如果我点击alt标签,我可以看到我的应用程序; 如果我将选项卡添加到其中并再次将其最小化,它将显示在任务栏上方:

最小化

我究竟做错了什么?

.net c# windows notifyicon winforms

26
推荐指数
2
解决办法
3万
查看次数

使用WPF最小化应用程序到系统托盘(不使用NotifyIcon)

我完成了我的应用程序,现在我希望将"最小化到系统托盘功能"中.我读了一篇很好的文章, 最小化app到系统托盘.我意识到这些都使用了Windows.Form类.

不幸的是,我使用Windows Presentation Foundation WPF参考来制作我的应用程序UI.现在我看到WPF不支持NotifyIcon.我看到CodePlex上有一个开源库,模拟NotifyIcon属性WPF Contrib我尚未使用它.

现在我正在解决问题.以下是我的问题: -

a)我不想仅为一个组件合并第三方库.

b)我可以在WPF上没有NotifyIcon的情况下进行最小化功能吗?如果是,那么有人可以给我带来什么样的优惠?

或者也许我应该将我的UI恢复为使用Windows窗体?

c# windows wpf notifyicon wpf-controls

21
推荐指数
1
解决办法
4万
查看次数

将托盘图标设置为始终显示

如何将NotifyIcon设置为始终在右侧托盘中可见:http: //screensnapr.com/v/qKWHe2.png

因为它将其转移到非活动图标窗口:http: //screensnapr.com/v/jjtuK0.png

问题是托盘图标有一个上下文菜单,可以让某人拍摄屏幕截图.因此,每次他们拍摄截图时,图片中都会显示不活动的图标窗口,阻挡其背后的任何内容,如照片轰炸机.

我知道可以通过代码完成它,因为其他应用程序(如comodo)已经完成了它而没有让我拖放图标到那里.为了创建任务栏的快捷方式,我了解到你在这个文件夹中设置了一个快捷方式:

C:\Users\Username\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
Run Code Online (Sandbox Code Playgroud)

托盘有类似的东西吗?或者有一个选项我可以使用代码明智.

.net c# trayicon notifyicon winforms

17
推荐指数
3
解决办法
2万
查看次数

托盘图标动画

我知道如何在Windows通知区域(系统托盘)中放置一个图标.

有图标动画的最佳方法是什么?你可以使用动画gif,还是你必须依赖计时器?

我正在使用C#和WPF,但WinForms也接受了.

c# wpf trayicon system-tray notifyicon

16
推荐指数
1
解决办法
2万
查看次数

将文本写入系统托盘而不是图标

我试图在系统托盘中显示2-3个可更新的字符,而不是显示.ico文件 - 类似于CoreTemp在系统中显示温度时的操作尝试:

在此输入图像描述

我在WinForms应用程序中使用NotifyIcon以及以下代码:

Font fontToUse = new Font("Microsoft Sans Serif", 8, FontStyle.Regular, GraphicsUnit.Pixel);
Brush brushToUse = new SolidBrush(Color.White);
Bitmap bitmapText = new Bitmap(16, 16);
Graphics g = Drawing.Graphics.FromImage(bitmapText);

IntPtr hIcon;
public void CreateTextIcon(string str)
{
    g.Clear(Color.Transparent);
    g.DrawString(str, fontToUse, brushToUse, -2, 5);
    hIcon = (bitmapText.GetHicon);
    NotifyIcon1.Icon = Drawing.Icon.FromHandle(hIcon);
    DestroyIcon(hIcon.ToInt32);
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这产生的结果不如CoreTemp得到的结果:

在此输入图像描述

您认为解决方案是增加字体大小,但超过8的任何内容都不适合图像.将位图从16x16增加到32x32也没有任何作用 - 它会调整大小.

然后就是我想要显示"8.55"而不是"55"的问题 - 图标周围有足够的空间但看起来无法使用.

在此输入图像描述

有一个更好的方法吗?为什么Windows可以执行以下操作,但我不能?

在此输入图像描述

更新:

感谢@NineBerry提供了一个很好的解决方案.要添加,我发现Tahoma是最好使用的字体.

.net c# system-tray notifyicon

14
推荐指数
1
解决办法
2997
查看次数

我可以在WPF中使用NotifyIcon吗?

我想使用WPF最小化应用程序到系统托盘."NotifyIcon"是实现这一结果的唯一方法吗?如果是,在WPF中使用"NotifyIcon"需要哪个命名空间?

如果可能使用"NotifyIcon",请提供一些提示,我如何在主窗口中使用它?

我的主窗口是,

public partial class MonthView : MetroWindow
{

    public DateTime SelectedDate { get; set; }

    public MonthView()
    {

            InitializeComponent();
            calMain.DisplayDate = DateTime.Today;
            Globals._globalController = new AppController();
            Globals._globalController.appTaskManager.setupLocal();
            Globals._globalController.setMonthViewWindow(this);

    }

    public void calItemSelectedDate(object sender, SelectionChangedEventArgs e)
    {
        DateTime d;
        if (sender is DateTime)
        {
            d = (DateTime)sender;
        }
        else
        {
            DateTime.TryParse(sender.ToString(), out d);
        }

        SelectedDate = d;

        ShowActivity(d);
     }

    public void ShowActivity(DateTime date)
    {
        DayView Activity = new DayView(date);
        Activity.Show();
        this.Hide();
    }

    private void SetButton_Click(object sender, RoutedEventArgs e)
    { …
Run Code Online (Sandbox Code Playgroud)

c# windows wpf notifyicon wpf-controls

12
推荐指数
3
解决办法
4万
查看次数

NotifyIcon的问题在Winforms App上没有消失

我有一个.Net 3.5 C#Winforms应用程序.它没有GUI,只有一个带有ContextMenu的NotifyIcon.

我试图将NotifyIcon设置为visible = false并将其在Application_Exit事件中处理,如下所示:

        if (notifyIcon != null)
        {
            notifyIcon.Visible = false;
            notifyIcon.Dispose();
        }
Run Code Online (Sandbox Code Playgroud)

应用程序获取括号内的代码,但在尝试设置Visible = false时抛出空引用异常.

我已经阅读了几个地方,把它放在表格结束事件中,但是那个代码永远不会被击中(可能因为我没有这样的表格?).

我在哪里可以放置这些代码,以便实际工作?如果我没有把它放入,我会在托盘中看到烦人的挥之不去的图标,直到你将鼠标移到它上面.

干杯.

编辑

只是我注意到了一些额外的东西...........

我在应用程序中使用ClickOnce .........如果我只是通过NotifyIcon上的ContextMenu退出应用程序,则不会记录任何异常.

就在应用程序在此处检查升级后触发Application_Exit事件时...

private void CheckForUpdate()
{
    EventLogger.Instance.LogEvent("Checking for Update");
    if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.CheckForUpdate())
    {
        EventLogger.Instance.LogEvent("Update available - updating");
        ApplicationDeployment.CurrentDeployment.Update();
        Application.Restart();
    }
}
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?

c# notifyicon winforms

11
推荐指数
2
解决办法
1万
查看次数