【问题标题】:NotifyIcon BalloonTipClicked Event not FiringNotifyIcon BalloonTipClicked 事件未触发
【发布时间】: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


【解决方案1】:

尝试替换以下内容:

notifyIcon.BalloonTipClicked += delegate
    {
        //NOT GOING HERE :(
        MessageBox.Show("TEST");
    };

与:

notifyIcon.BalloonTipClicked += (sender, e) => {
    //Your code.
};

【讨论】:

  • 现在已修复,谢谢,这是由于没有在调用 Application.Run() 的同一线程上运行该方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2010-11-08
  • 2019-01-31
相关资源
最近更新 更多