我有一个使用XAML和MVVM的C#WPF应用程序.我的问题是:如何在文本框上方显示用户输入的某些无效数据的气球工具提示?
我想使用微软的原生气球控制.我如何将这个实现到我的应用程序中?
我一直想知道,每当你调用类的ShowBalloonTip方法时NotifyIcon,你会得到一个这样的气球工具提示:

图1:标准气球工具提示
某些应用程序和Microsoft产品能够显示的不仅仅是那些"简单"的气球提示.
以下是一些示例:
图2:Windows Update气球工具提示
驱动程序安装提示http://i.msdn.microsoft.com/dynimg/IC295019.png图3
:硬件驱动程序安装气球工具提示

图4:硬件删除工具提示(程序:USB安全删除)
仔细看看图2,3和4,可以看出它们不是标准的气球工具提示!
图2具有不同的形状,可能来自设置Region属性.它还有一个比标准ToolTipIcon大得多的自定义图标.
Fig3使用标准形状(我认为),但它有一个自定义图标,不用说大于默认的ToolTipIcon大小.
图四使用标准ToolTipIcon但它具有不同的形状.
我的问题是如何创建在.NET的通知区域中看到的任何"丰富"气球工具提示?我可以处理WinAPI,它可以产生必要的输出.
如何在TBalloonHint?中显示'x'(关闭)图标?

我想以编程方式在控件附近显示一个气球提示,看起来像系统托盘中的通知.如果这不是TBalloonHint可以做的,我应该使用什么?
我尝试显示截图中的气球提示:
首先我创建了一个notifyIcon
然后我将此代码添加到Form1_Load函数:
private void Form1_Load(object sender, EventArgs e)
{
notifyIcon1.Visible = true;
notifyIcon1.Icon = SystemIcons.Exclamation;
notifyIcon1.BalloonTipTitle = "Balloon Tip Title";
notifyIcon1.BalloonTipText = "Balloon Tip Text.";
notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
notifyIcon1.ShowBalloonTip(10000);
}
Run Code Online (Sandbox Code Playgroud)
我得到的只是一个小图标,如果我将鼠标悬停在它上面,那么我会看到通知图标的名称.

我也试过这个,notifyIcon1.ShowBalloonTip(10000, "Text", "Title", ToolTipIcon.Warning);但后来没有任何反应.
我在功能描述中注意到,ShowBalloonTip从windows vista开始不推荐使用参数"timeout",那么我该怎么做呢?
PS:我在Windows 10 64bit上运行它.
更新1/3:
我刚创建了一个新项目,气球提示也没有显示.也许我的OS中的设置会阻止这些消息?
更新2/3:
我从@ pisi1001下载了这个项目,但是我得到了同样的行为.
所以我认为它必须是Windows 10中的错误,错误的设置或组策略.
但是,如下一个屏幕截图所示,该应用甚至可以显示通知:
更新3/3:
我注意到,如果双击该设置,您甚至可以更深入地配置,例如,从上一个屏幕截图中的"WindowsFormsApp1".
在我激活了最后一个屏幕截图中红色框中的设置(基本上是在"信息中心显示通知")后,我现在至少在信息中心收到通知:
这必须是Windows 10 Bug.
最后更新:自从我问这个问题几周后,现在似乎工作了,我不知道为什么.也许微软在向我们报告之后修复了它.
在我的Qt应用程序中,我想使用Windows用户体验指南(而不是系统托盘气球)中显示的气球/气球提示.
Qt支持这个吗?我什么都没找到.有没有一个开源库(Qxt没有它)?创建自己的最佳方法是什么?
在Windows 10上,NEVER 的ShowBalloonTip方法NotifyIcon显示气球提示.这似乎与Windows本身有关.
如果我转到Settings > System > Notifications & actions>并找到我正在运行的应用程序(vshost32.exe在调试模式下)并单击它,然后打开Show notifications in the action center,我可以清楚地看到气球提示消息被添加到通知,但从来没有气球提示.
我认为这是Windows 10的一个问题.
我的NotifyIcon是VISIBLE
my_icon.ShowBalloonTip("Title", "Message", BalloonIcon.Info);
Run Code Online (Sandbox Code Playgroud) 是我,还是这里讨厌的东西NotifyIcon.无论我给方法的timeout参数什么,NotifyIcon.ShowBalloonTip它只显示一定的时间.在win7上大约9秒,在Windows Server 2008 r2上赢得8.1和大约4秒.这些是我到目前为止尝试的操作系统.
我尝试了两种重载,NotifyIcon.ShowBalloonTip但我得到了相同的结果.
//this is only shown for 9 seconds
notifyIcon1.ShowBalloonTip(15000);
Run Code Online (Sandbox Code Playgroud)
还有这个
//this is only shown for 9 seconds too :)
notifyIcon1.ShowBalloonTip(15000, "1 sec", "shown for one sec", ToolTipIcon.Info);
Run Code Online (Sandbox Code Playgroud)
在msdn上它说:
最小和最大超时值由操作系统强制执行,通常分别为10秒和30秒,但这可能因操作系统而异.
好的,但我们对此没有任何说法吗?如果是预设值,为什么会有这个timeout参数?
我希望我错过了一些愚蠢的东西.(我正在使用.net 4.5)
在我的应用程序中,我想使用工具提示指向标签以引起用户注意:
toolTip.IsBalloon = true;
toolTip.Show("message", label1);
Run Code Online (Sandbox Code Playgroud)
问题是气球没有指向指定的标签.我该怎么办?
我正在使用蓝牙将一个约500MB的大文件从一个系统传输到另一个系统。在这段时间里,我将看到一个气球弹出窗口,上面显示“ Bluetooth Connection”(蓝牙连接),其内容是模式已更改为高速模式。我想使用python在变量中获取此文本。关于如何从气球弹出窗口中读取文本的任何线索?
希望尽快得到答复。
关于辛
这是我尝试运行程序时收到的错误.(请原谅我的背景,这是我试图创造的关键部分)

这是我试图执行的C#代码
int oldCount;
string RecentPlayer;
string val;
public void SetBalloonTip()
{
NewPlayerMessage.BalloonTipTitle = "A Player Has Joined!";
NewPlayerMessage.BalloonTipText = RecentPlayer + " has joined your server " + ConfigKey.ServerName.GetString();
NewPlayerMessage.BalloonTipIcon = ToolTipIcon.Info;
}
private void PlayerListUpdates_Tick(object sender, EventArgs e)
{
oldCount = playerList.Items.Count - 1;
if (oldCount < playerList.Items.Count)
{
if (playerList.Items.Count > 0)
{
RecentPlayer = playerList.Items[playerList.Items.Count].ToString();
val = playerList.Items[playerList.Items.Count].ToString();
NewPlayerMessage.Visible = true;
SetBalloonTip();
NewPlayerMessage.ShowBalloonTip(50000);
}
}
else {
return;
}
}
Run Code Online (Sandbox Code Playgroud)