好吧,首先,我刚开始使用C#,所以我并不是最熟练的程序员。好了,这就是我的问题,可能在你们看来很愚蠢;)
我有一个朋友让我做的足够简单的应用程序。到目前为止,我已经用了一点Google,但我还是坚持这样做。应用程序运行良好,最小化到系统托盘,最大化从系统托盘,这是很好的。但是,当我从该应用程序打开第二个表单时,它会在系统托盘中创建另一个图标,并在每次打开另一个表单时开始复制。所以最终我有了很多图标,它们都是主窗体的独立实例。系统托盘事件
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();
}如何将所有窗体映射到系统托盘中的同一图标?
发布于 2011-06-16 17:19:24
您将需要一个全局托盘图标,它们都可以访问。为此,请使用静态变量,该变量在类的不同实例中保持不变。
然后,如果你想:
发布于 2011-06-16 17:17:13
如果我没弄错的话,您只想让应用程序的一个实例保持运行。在这种情况下,你的标题有点误导,因为你的问题与托盘图标或多个表单无关。
另一方面,如果您的应用程序中确实有一个main form,它会打开second form (它会创建一个托盘图标),在这种情况下,您只需确保您的第二个form只实例化一次:
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();
}
}https://stackoverflow.com/questions/6369197
复制相似问题