我有一个C#程序,它位于系统托盘中,然后立即弹出通知气球。我想在通知气球上提供2-3个按钮,以允许用户在通知出现时采取各种操作 - 而不是,例如,必须单击通知气球才能显示表单包含每个可能操作的按钮。
我正在寻找有关实施此方法的最佳方法的建议。
编辑:澄清,我想在通知气球上提供按钮,以便用户可以直接对通知采取行动,而不必通过应用程序的其他部分(例如表单或菜单)采取行动。
答案 0 :(得分:1)
没有内置的方法。我建议编写自己的“气球”并激活它而不是调用.ShowBalloon()
答案 1 :(得分:-1)
我就是这样做的。这可能不是正确的做法。我是这样做的,因为.ShowBalloonTip(i)
对我来说不起作用。它不会停留i
秒并熄灭。所以我在另一个线程中做了强行处理。
private static NotifyIcon _notifyIcon;
//you can call this public function
internal static void ShowBalloonTip(Icon icon)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerAsync(icon);
}
private static void worker_DoWork(object sender, DoWorkEventArgs e)
{
Show(e);
Thread.Sleep(2000); //meaning it displays for 2 seconds
DisposeOff();
}
private static void Show(DoWorkEventArgs e)
{
_notifyIcon = new NotifyIcon();
_notifyIcon.Icon = (Icon)e.Argument;
_notifyIcon.BalloonTipTitle = "Environment file is opened";
_notifyIcon.BalloonTipText = "Press alt+tab to switch between environment files";
_notifyIcon.BalloonTipIcon = ToolTipIcon.Info;
_notifyIcon.Visible = true;
_notifyIcon.ShowBalloonTip(2000); //sadly doesnt work for me :(
}
private static void DisposeOff()
{
if (_notifyIcon == null)
return;
_notifyIcon.Dispose();
_notifyIcon = null;
}