【发布时间】:2015-08-29 00:35:23
【问题描述】:
您好,当用户单击气球提示时,我正在尝试运行一些代码。目前它正在显示气球提示,但是当我点击它时,代表没有被解雇。
这是创建 NotifyIcon 的地方
private NotifyIcon notifyIcon;
public ClockOutTimer(DateTime? clockOutTime)
{
//IF CLOCK OUT TIME = NULL SET CLOCK OUT TIME TO 5 HOURS IN FUTURE
ClockOutTime = clockOutTime ?? DateTime.Now.AddHours(5);
notifyIcon = new NotifyIcon()
{
Icon = Properties.Resources.MainIcon,
Text = "Organiser"
};
//CREATE DELEGATE FOR BALOON CLICKED
notifyIcon.BalloonTipClicked += delegate
{
//NOT GOING HERE :(
MessageBox.Show("TEST");
};
notifyIcon.BalloonTipIcon = ToolTipIcon.None;
notifyIcon.BalloonTipText = String.Format("It is nearing {0} would you like to clock out?", ClockOutTime.ToString("HH:mm"));
notifyIcon.BalloonTipTitle = "Organiser";
//START REMINDER THREAD
_Reminder = new Thread(new ThreadStart(_reminder));
_Reminder.Start();
}
这是调用气球提示的地方
private void Remind()
{
//IF USER IS IN REMIND USER TO CLOCK OUT
if (!Global.CurrentUser.In)
{ this.Dispose(); return; }
notifyIcon.Visible = true;
notifyIcon.ShowBalloonTip(20000);
//Thread.Sleep(5000);
//notifyIcon.Visible = false;
//this.Dispose();
}
还尝试了 IntelliSense 为您创建的方法,但也没有用。
改为
NotifyIcon notifyIcon = new NotifyIcon()
{
Icon = Properties.Resources.MainIcon,
Text = "Organiser",
BalloonTipIcon = ToolTipIcon.None,
BalloonTipText = String.Format("It is nearing {0} would you like to clock out?", ClockOutTime.ToString("HH:mm")),
BalloonTipTitle = "Organiser",
};
notifyIcon.BalloonTipClosed += new EventHandler(BalloonClicked);
notifyIcon.Click += new EventHandler(BalloonClicked);
notifyIcon.BalloonTipClicked += new EventHandler(BalloonClicked);
notifyIcon.BalloonTipShown += new EventHandler(BalloonClicked);
notifyIcon.Disposed += new EventHandler(BalloonClicked);
notifyIcon.MouseClick += (object sender, MouseEventArgs e) => MessageBox.Show(e.X.ToString());
notifyIcon.Visible = true;
notifyIcon.ShowBalloonTip(20000);
现在所有代码都在一种方法中,但它仍然无法正常工作。没有任何事件触发
更新
这是由于我没有在主线程之外运行该方法。感谢您的帮助
【问题讨论】:
-
嗯,奇怪的是它编译为您的委托不是 EventHandler,将其更改为 notifyIcon.BalloonTipClicked += (sender, e) => MessageBox.Show("TEST");
标签: c# events delegates notifyicon