解决方案 »
- dataview单元格鼠标放上去的提示显示太慢,有何办法?
- C# 如何 和php 的des 加密解密 保持一致
- 关于C#中的线程池
- 常见问题,高分请教
- 我要实现ListView的排序功能,请问,那两个三角形图标,怎么取得?
- 大家觉得EditePlus和UltraEdit各有什么优缺点,大家喜欢用哪个啊?
- 初学者的疑惑
- 在windows服务里面,获取当前程序的路径是,获取的为什么是:winnt\system32
- 新手提问:如何让两个WINFORM使用同一个DATASET,以显示相同的数据?
- 如何写一个让系统在每天的固定时间重启的程序?
- 仿淘宝开放平台,通过method名称调用对应的接口
- 连连看布局案例中遇到生成图案异常情况
privatevoid exitMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你确定要退出终端服务程序吗?", "确认", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
Application.Exit();
}
}
public bool Visible {
get {
return visible;
}
set {
if (visible != value) {
UpdateIcon(value);
visible = value;
}
}
}
关键代码在UpdateIcon里面
private void UpdateIcon(bool showIconInTray) {
lock(syncObj) {
// Bail if in design mode...
//
if (DesignMode) {
return;
}
IntSecurity.UnrestrictedWindows.Demand();
window.LockReference(showIconInTray);
NativeMethods.NOTIFYICONDATA data = new NativeMethods.NOTIFYICONDATA();
data.uCallbackMessage = WM_TRAYMOUSEMESSAGE;
data.uFlags = NativeMethods.NIF_MESSAGE;
if (showIconInTray) {
if (window.Handle == IntPtr.Zero) {
window.CreateHandle(new CreateParams());
}
}
data.hWnd = window.Handle;
data.uID = id;
data.hIcon = IntPtr.Zero;
data.szTip = null;
if (icon != null) {
data.uFlags |= NativeMethods.NIF_ICON;
data.hIcon = icon.Handle;
}
data.uFlags |= NativeMethods.NIF_TIP;
data.szTip = text;
if (showIconInTray && icon != null) {
if (!added) {
UnsafeNativeMethods.Shell_NotifyIcon(NativeMethods.NIM_ADD, data);
added = true;
}
else {
UnsafeNativeMethods.Shell_NotifyIcon(NativeMethods.NIM_MODIFY, data);
}
}
else if (added) {
UnsafeNativeMethods.Shell_NotifyIcon(NativeMethods.NIM_DELETE, data);
added = false;
}
}
}
UnsafeNativeMethods.Shell_NotifyIcon(NativeMethods.NIM_DELETE, data);
说明其实隐藏就是删除了图标。
http://referencesource.microsoft.com/#System.Windows.Forms/ndp/fx/src/winforms/Managed/System/WinForms/NotifyIcon.cs以后类似问题自己看看就知道了,无须提问。
if(!NeedExit)
{
e.Cancel = true;
this.Hide();
}
想真正退出,close前把变量设置true就行了