我做了一个托盘程序,再打开程序时,能正确隐藏窗口。通过托盘打开窗口,点击窗口最小化,重新隐藏窗口,可再通过托盘显示时,窗口只能显示标题栏,这是怎么回事啊?
程序在下面:
public Form1()
{
InitializeComponent();
Initializenotifyicon();//使用托盘显示初始化
}
private void Initializenotifyicon()
{
this.MaximizeBox = false;
this.ShowInTaskbar = false;
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
this.Visible = false; this.SizeChanged += new EventHandler(Form1_SizeChanged); TrayIcon = new NotifyIcon();
TrayIcon.Icon = mNetTrayIcon;
TrayIcon.Text = "事件监听程序" + "\n" + "版权:北京安图公司";
TrayIcon.Visible = true;
TrayIcon.Click += new System.EventHandler(this.OpenForm); MenuItem[] mnuItms = new MenuItem[3]; mnuItms[0] = new MenuItem();
mnuItms[0].Text = "打开";
mnuItms[0].Click += new EventHandler(this.OpenForm);
mnuItms[0].DefaultItem = true; mnuItms[1] = new MenuItem("-"); mnuItms[2] = new MenuItem();
mnuItms[2].Text = "退出系统";
mnuItms[2].Click += new EventHandler(this.CloseForm); notifyiconMnu = new ContextMenu(mnuItms);
TrayIcon.ContextMenu = notifyiconMnu;
} private void OpenForm(object sender, System.EventArgs e)
{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
this.Visible = true;
this.Show();
} private void CloseForm(object sender, System.EventArgs e)
{
TrayIcon.Visible = false;
this.Close();
} private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
this.Visible = false;
}
}
程序在下面:
public Form1()
{
InitializeComponent();
Initializenotifyicon();//使用托盘显示初始化
}
private void Initializenotifyicon()
{
this.MaximizeBox = false;
this.ShowInTaskbar = false;
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
this.Visible = false; this.SizeChanged += new EventHandler(Form1_SizeChanged); TrayIcon = new NotifyIcon();
TrayIcon.Icon = mNetTrayIcon;
TrayIcon.Text = "事件监听程序" + "\n" + "版权:北京安图公司";
TrayIcon.Visible = true;
TrayIcon.Click += new System.EventHandler(this.OpenForm); MenuItem[] mnuItms = new MenuItem[3]; mnuItms[0] = new MenuItem();
mnuItms[0].Text = "打开";
mnuItms[0].Click += new EventHandler(this.OpenForm);
mnuItms[0].DefaultItem = true; mnuItms[1] = new MenuItem("-"); mnuItms[2] = new MenuItem();
mnuItms[2].Text = "退出系统";
mnuItms[2].Click += new EventHandler(this.CloseForm); notifyiconMnu = new ContextMenu(mnuItms);
TrayIcon.ContextMenu = notifyiconMnu;
} private void OpenForm(object sender, System.EventArgs e)
{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
this.Visible = true;
this.Show();
} private void CloseForm(object sender, System.EventArgs e)
{
TrayIcon.Visible = false;
this.Close();
} private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
this.Visible = false;
}
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
this.Visible = false;
}
}去掉这个事件看看如果没用得话
去掉这个的话,会在windows的左下角显示最小化的窗口,而我想实现的是最小化后,都不显示,只在托盘那里显示图标。
====================================================================
/// <summary>
/// Occurs before the form is closed.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
notifyIcnMainFrm.Visible = this.m_VisibleBalloonInTaskBar; InitBalloonOfTaskBar(); if (!VisibleBalloonInTaskBar)
{
if (m_FormType == TypeOfForms.SubForm)
return;
else if (m_FormType == TypeOfForms.MainForm)
{
Application.Exit();
return;
}
} //event while closing forms.
if (this.WindowState != FormWindowState.Minimized)
{
e.Cancel = true;
this.WindowState = FormWindowState.Minimized;
this.Hide();
this.notifyIcnMainFrm.ShowBalloonTip(m_TipPeriod, m_strTipTitle, m_strTipText, ToolTipIcon.Info);
ResetTextImageOfContentTextMenu(m_conTxtType);
}
else //if (this.WindowState != FormWindowState.Maximized)
{
e.Cancel = false;
Application.Exit();
} }