C#隱蔽主窗口的辦法小結。本站提示廣大學習愛好者:(C#隱蔽主窗口的辦法小結)文章只能為提供參考,不一定能成為您想要的結果。以下是C#隱蔽主窗口的辦法小結正文
本文實例總結了C#隱蔽主窗口的辦法。分享給年夜家供年夜家參考,詳細以下:
請求在法式啟動的時刻主窗口隱蔽,只在體系托盤裡顯示一個圖標。一向以來采取的辦法都是設置窗口的ShowInTaskBar=false, WindowState=Minimized。然則有時發明雖然如許的辦法可使主窗口隱蔽不見,然則在用Alt+Tab的時刻卻可以看見這個法式的圖標並把這個窗口顯示出來。是以這類辦法其實其實不能知足請求。
辦法一: 重寫setVisibleCore辦法
protected override void SetVisibleCore(bool )
{
base.SetVisibleCore(false);
}
這個辦法比擬簡略,然則應用了這個辦法後主窗口就不再能被顯示出來,並且在加入法式的時刻也必需挪用Application.Exit辦法而不是Close辦法。如許的話就要斟酌一下,要把主窗口的許多功效放到其他的處所去。
辦法二: 不創立主窗口,直接創立NotifyIcon和ContextMenu組件
這類辦法比擬費事,許多代碼都必需手工寫
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
System.Resources.ResourceManager resources =
new System.Resources.ResourceManager("myResource", System.Reflection.Assembly.GetExecutingAssembly());
NotifyIcon ni = new NotifyIcon();
ni.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Warning;
ni.BalloonTipText = "test!";
ni.BalloonTipTitle = "test.";
//ni.ContextMenuStrip = contextMenu;
ni.Icon = ((System.Drawing.Icon)(resources.GetObject("ni.Icon")));
ni.Text = "Test";
ni.Visible = true;
ni.MouseClick += delegate(object sender, MouseEventArgs e)
{
ni.ShowBalloonTip(0);
};
Application.Run();
}
假如須要的組件太多,這個辦法就很繁瑣,是以只是做為一種可行性研討。
辦法三:後面兩種辦法都有一個成績,主窗口不克不及再顯示出來。如今這類辦法就沒有這個成績了
private bool windowCreate=true;
...
protected override void OnActivated(EventArgs e)
{
if (windowCreate)
{
base.Visible = false;
windowCreate = false;
}
base.OnActivated(e);
}
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
if (this.Visible == true)
{
this.Hide();
this.ShowInTaskbar = false;
}
else
{
this.Visible = true;
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
//this.Show();
this.BringToFront();
}
}
願望本文所述對年夜家C#法式設計有所贊助。