I've searched through a number of different posts to do with creating toast notifications from a Win Form however when these through I get an error when generating the toast notification.
System.Exception: Element not found. (Exception from HRESULT:0x80070490).
I have edited the csproj file and added the following:
<PropertyGroup>
<TargetPlatformVersion>10.0.10586</TargetPlatformVersion>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
and added the references to Windows.Data
and Windows.UI
and also a reference to System.Runtime.dll
as per the suggestions in Windows.UI.Notifications is missing
using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;
using System.Windows.Forms;
using System;
namespace ToastNotify
{
class Notify
{
public void GenerateToast(string header, string content)
{
ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText02;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode(header));
toastTextElements[1].AppendChild(toastXml.CreateTextNode(content));
XmlNodeList toastImageElements = toastXml.GetElementsByTagName("image");
((XmlElement)toastImageElements[0]).SetAttribute("src", "..\\..\\Resources\\icon.ico");
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
((XmlElement)toastNode).SetAttribute("duration", "long");
ToastNotification toast = new ToastNotification(toastXml);
try
{
ToastNotificationManager.CreateToastNotifier().Show(toast);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Any suggestions as to where I am going wrong?
您应该明确提供applicationId
CreateToastNotifier。
像这样:
private const String APP_ID = "Microsoft.Samples.DesktopToastsSample";
...
ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);
Run Code Online (Sandbox Code Playgroud)
但是我有个坏消息。从Windows 10 1709开始,WinForms应用程序仅不显示吐司通知。在该Show(toast)工作之前,但现在它既不会引发异常,也不会显示任何Toast通知。
我仍然在想办法。
正如Prateek Shrivastava指出的那样,存在(新)限制。
更新:
这是逐步指南,使用APP_ID创建安装程序,因此通知将在所有 Windows 10版本上均适用:
从桌面C#应用程序发送本地Toast通知
更新:
无需安装即可在Windows 10 1903中再次运行。