Minimize to system tray
我按照页面上的说明进行操作
但是,应用程序没有附加图标,所以隐藏表单后,我无法重新显示表单,因为系统托盘上没有图标,
我该如何解决这个问题?
这是我的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private void Form1_Resize(object sender, EventArgs e) { if (FormWindowState.Minimized == this.WindowState) { notifyIcon1.Visible = true; cmd.cetakSukses(ident.judul_App +" Diperkecil ke dalam System Tray"); notifyIcon1.BalloonTipText = ident.judul_App +" Diperkecil ke dalam System Tray"; notifyIcon1.BalloonTipTitle = ident.judul_App; notifyIcon1.BalloonTipIcon = ToolTipIcon.Error; notifyIcon1.ShowBalloonTip(500); this.Hide(); } else { } } |
更新:
我已附加图标,但图标仍未显示在系统托盘上
我想出了如何使表单显示,我需要将以下代码添加到
1 2 3 4 | private void notifyIcon1_DoubleClick(object sender, EventArgs e) { this.Show(); } |
您可以在设计时使用属性表设置通知图标:
或者您可以使用以下代码在运行时添加/更改图标属性:
1 |
这就是我通过 WPF 应用程序背后的代码实现的方式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | System.Windows.Forms.NotifyIcon m_NotifyIcon; public StartWindow() { InitializeComponent(); m_NotifyIcon = new System.Windows.Forms.NotifyIcon(); m_NotifyIcon.Icon = new System.Drawing.Icon(IconPath); m_NotifyIcon.Visible = true; m_NotifyIcon.BalloonTipTitle ="Tip here"; m_NotifyIcon.Text ="Text here"; m_NotifyIcon.DoubleClick += delegate(object sender, EventArgs args) { this.Show(); this.WindowState = WindowState.Normal; }; } protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { try { if (m_NotifyIcon != null) m_NotifyIcon.Dispose(); } catch { } base.OnClosing(e); } protected override void OnStateChanged(EventArgs e) { if (WindowState == WindowState.Minimized) this.Hide(); base.OnStateChanged(e); } |
您需要通过使用 Visual Studio 或以编程方式为您的应用程序提供一个图标。
您可以在 VS 中通过转到项目属性并选择应用程序选项卡来执行此操作
或者,如果您的项目已经附加了图标文件,您可以在运行时设置它。
1 2 3 |