[英]System Tray Icon
好吧,首先我刚开始使用C#,所以我不是那里最熟练的程序员。 好的,所以这是我的问题,对你们来说可能看起来很愚蠢;)
我有一个简单的应用程序,朋友邀请我这样做。 到目前为止,我已经管理了一些谷歌,但我坚持这一点。 该应用程序运行良好,最小化到系统托盘,并从系统托盘最大化,这是好的。 但是,当我从该应用程序打开第二个表单时,它会在系统托盘中创建另一个图标,并在每次打开另一个表单时开始复制。 所以最终我有很多图标,所有图标都是主窗体的单独实例。 系统托盘事件
private void notifyIcon_systemTray_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (FormWindowState.Minimized == WindowState)
{
Show();
WindowState = FormWindowState.Normal;
}
}
private void CronNecessityForm_Resize(object sender, EventArgs e)
{
notifyIcon_systemTray.Visible = true;
if (FormWindowState.Minimized == WindowState)
Hide();
}
private void restoreContextMenuItem_Click(object sender, EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}
打开表格:
private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
{
CronPreferences.formPreferences CronPreferences = new CronPreferences.formPreferences();
CronPreferences.Show();
}
关闭它:
private void button2_Click(object sender, EventArgs e)
{
this.Hide();
}
如何将所有表单映射到系统托盘中的相同图标?
您将需要一个他们都可以访问的单个全局托盘图标。 通过使用在类的不同实例中保持不变的静态变量来执行此操作。
然后,如果你想:
如果我做对了,你只想保持应用程序的一个实例运行。 在这种情况下,您的标题有点误导,因为您的问题与托盘图标或多个表单无关。
另一方面,如果您的应用程序中确实有一个主窗体 ,它会打开第二个窗体 (创建托盘图标),在这种情况下,您只需要确保第二个窗体仅实例化一次:
public class MainForm
{
private SecondForm _secondForm;
public void OpenSecondForm()
{
// create it only once
if (_secondForm == null)
_secondForm = new SecondForm();
// otherwise just show it
_secondForm.Show();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.