gpt4 book ai didi

c# - 如何测试我的 notifyIcon 使用的是哪个图标?

转载 作者:行者123 更新时间:2023-11-28 21:03:07 26 4
gpt4 key购买 nike

我在测试我的 notifyIcon 使用的是哪个图标时遇到问题。

我有一个为我的程序实例化的通知图标。当程序运行时,我在我的代码中为它分配了一个图标。

public Form1()
{
InitializeComponent();
notifyIcon1.Icon = Properties.Resources.LogoIcon;
}

我有 2 个按钮,一个用于启动我的计时器,另一个用于停止我的计时器。计时器事件应该检查​​当前正在使用哪个图标并将其切换到另一个选项,但它在我的测试中不起作用。

Timer miniClock = new Timer();

private void btnStartTimer_Click(object sender, EventArgs e)
{
miniClock.Interval = 1000;
miniClock.Tick += new EventHandler(MiniClockEventProcessor);
miniClock.Start();
}

private void MiniClockEventProcessor(Object myObject, EventArgs myEventArgs)
{
if (notifyIcon1.Icon == Properties.Resources.AlertIcon)
{
notifyIcon1.Icon = Properties.Resources.LogoIcon;
}
else
notifyIcon1.Icon = Properties.Resources.AlertIcon;

}

private void btnStopTimer_Click(object sender, EventArgs e)
{
miniClock.Stop();
btnTest.Enabled = true;
}

令人沮丧的是,当我启动计时器时,它会更改图标,但我的测试失败了,它只会切换 else 语句中的图标,因为除了它没有通过 if 语句之外没有其他标准?我如何测试当前正在使用哪个图标,然后在计时器事件调用中将图标切换到对应的图标?

最佳答案

原因是每次您直接从 Properties.Resources 访问一个对象时,它实际上是重新读取它并创建一个新对象。由于 == 将通过引用进行测试并且引用不相等,因此您的测试每次都会失败。

解决方案是缓存它,不管效率如何,你都应该这样做:

private static readonly Icon LogoIcon = Properties.Resources.LogoIcon;
private static readonly Icon AlertIcon = Properties.Resources.AlertIcon;

public Form1()
{
InitializeComponent();
notifyIcon1.Icon = LogoIcon;
}

Timer miniClock = new Timer();

private void btnStartTimer_Click(object sender, EventArgs e)
{
miniClock.Interval = 1000;
miniClock.Tick += new EventHandler(MiniClockEventProcessor);
miniClock.Start();
}

private void MiniClockEventProcessor(Object myObject, EventArgs myEventArgs)
{
if (notifyIcon1.Icon == AlertIcon)
{
notifyIcon1.Icon = LogoIcon;
}
else
notifyIcon1.Icon = AlertIcon;

}

private void btnStopTimer_Click(object sender, EventArgs e)
{
miniClock.Stop();
btnTest.Enabled = true;
}

关于c# - 如何测试我的 notifyIcon 使用的是哪个图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com