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#法式設計有所贊助。