关于SO的问题有很多疑问.解决方案是设置
notifyIcon.icon = null并Dispose在FormClosing事件中调用它.
在我的应用程序中,没有这样的表单,但有通知图标更新事件.在创作时,我隐藏了我的形式并制作了ShowInTaskbar财产false.因此,我不能有"FormClosing"或"FormClosed"事件.
如果此应用程序获取退出事件,则调用Process.GetCurrentProcess().Kill();退出.
我notifyIcon.icon = null在杀戮之前添加了Dispose,但仍然将图标保留为任务栏,直到我将鼠标悬停在它上面.
编辑:如果我认为这种行为是由于调用GetCurrentProcess().Kill(),是否有任何优雅的方式退出应用程序,这将清除所有资源并从系统托盘中删除图标.
Jas*_*ias 49
你可以设置
notifyIcon1.Visible = false;
Run Code Online (Sandbox Code Playgroud)
要么
notifyIcon.Icon = null;
Run Code Online (Sandbox Code Playgroud)
在结束活动的形式.
The*_*Man 14
对我有用的唯一解决方案是使用Closed事件并隐藏和处理图标.
icon.BalloonTipClosed += (sender, e) => {
var thisIcon = (NotifyIcon)sender;
thisIcon.Visible = false;
thisIcon.Dispose();
};
Run Code Online (Sandbox Code Playgroud)
小智 9
notifyIcon.Visible = False在FormClosing事件中使用
组件必须按照正确的顺序进行处理,如下所示:
NotifyIcon.Icon.Dispose();
NotifyIcon.Dispose();
Run Code Online (Sandbox Code Playgroud)
将此添加到MainWindow结束事件。
希望这会有所帮助。
小智 7
我试过这段代码.我觉得这更容易.我会为几个工具或事件编写它.我希望它对你有所帮助.
按"退出"或"关闭"按钮时,如果要执行此操作,请使用此代码:
private void ExitButton_Click(object sender, EventArgs e)
{
notifyIcon.Dispose();
Application.Exit(); // or this.Close();
}
Run Code Online (Sandbox Code Playgroud)
如果要在表单关闭时执行此操作,请使用此代码:
private void Form1_FormClosing(object sender, EventArgs e)
{
notifyIcon.Dispose();
Application.Exit(); // or this.Close();
}
Run Code Online (Sandbox Code Playgroud)
重要的代码是这样的:
notifyIcon.Dispose();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45996 次 |
| 最近记录: |