从代码隐藏或 XAML 中设置 NotifyIcon 控件中的图像

发布于 2024-11-02 18:55:28 字数 512 浏览 5 评论 0原文

我正在使用 WindowsForms 中的 NotifyIcon,因为在 WPF 中我们没有这样的控件,但是 WinForms 中的控件工作正常,我的问题只是当图像位于项目中时将图像设置为 NotifyIcon 中的图标。

我将图像放在项目中名为 Images 的文件夹中,图像文件名为“notification.ico”。

这是我的 NotifyIcon:

System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
{
    Icon = new System.Drawing.Icon(@"/Images/notification.ico"),
    ContextMenu = menu,
    Visible = true
};

我在这里做错了什么?

我可以在 XAML 中而不是在代码隐藏中创建 NotifyIcon 吗?如果可以的话我该怎么做?

提前致谢!

i am using the NotifyIcon from WindowsForms because in WPF we don't have such control, but the one from WinForms works fine, my problem is only setting an image as icon in the NotifyIcon when the image is in the Project.

I have the image in a folder called Images in my Project, the image file calls 'notification.ico'.

Here is my NotifyIcon:

System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
{
    Icon = new System.Drawing.Icon(@"/Images/notification.ico"),
    ContextMenu = menu,
    Visible = true
};

What i am doing wrong here?

And can i create my NotifyIcon in XAML instead in Code Behind? If it's possible, how can i do it?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

套路撩心 2024-11-09 18:55:28

System.Drawing.Icon 不支持用于 WPF 资源的 pack:// URI 方案。您可以:

  • 将图标作为嵌入资源包含在 resx 文件中,并直接使用生成的属性:

    System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
    {
        图标 = Properties.Resources.notification,
        上下文菜单=菜单,
        可见 = 真实
    };
    
  • 或从 URI 手动加载它,如下所示:

    StreamResourceInfo sri = Application.GetResourceStream(new Uri("/Images/notification.ico"));
    System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
    {
        图标 = new System.Drawing.Icon(sri.Stream),
        上下文菜单=菜单,
        可见 = 真实
    };
    

System.Drawing.Icon doesn't support the pack:// URI scheme used for WPF resources. You can either:

  • include your icon as an embedded resource in a resx file, and use the generated property directly:

    System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
    {
        Icon = Properties.Resources.notification,
        ContextMenu = menu,
        Visible = true
    };
    
  • or load it manually from the URI like this:

    StreamResourceInfo sri = Application.GetResourceStream(new Uri("/Images/notification.ico"));
    System.Windows.Forms.NotifyIcon sysIcon = new System.Windows.Forms.NotifyIcon() 
    {
        Icon = new System.Drawing.Icon(sri.Stream),
        ContextMenu = menu,
        Visible = true
    };
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文