測試文字功能,小工具,標題

記錄很重要,不然會浪費很多時間在找以前的記憶

一個人的氣度,決定他未來的高度。

2014年6月14日 星期六

C# 想讓winform 啟動 → 隱藏 使用 Hide 順便練習WinForm的生命周期

如題,WinForm想一啟動就隱藏起來
想寫簡單一點,就把this.Hide();寫在Load事件裡
結果Load事件發先後,沒有Form沒有Hide
再問問了G老師

找到了 把Form的屬性WindowState設定為Minimized
然後Form_Load還是一樣放this.Hide();
這樣就可以,只會在工作管理員看到它。

但如果在Form_Load這樣寫,執行後工具例上還是看的見圖示
  this.WindowState = FormWindowState.Minimized;
  this.Hide();

如果在Form_Load這樣寫,執行後工具例上還是看不見圖示
  this.WindowState = FormWindowState.Minimized;
  this.ShowInTaskbar = false; //不在工具例出現
但會在工具管理員的應用程式出現
//把Form的Text = "",就不會出現在工具管理員的應用程式
this.Text = ""; //這樣就可以不出現在工作管理員上的應用程式上

後來寫成這樣,因為要寫一支定時檢查另一支程式是不是運作中,不想被USER不小心關掉。
this.WindowState = FormWindowState.Minimized;
 this.ShowInTaskbar = false;
 this.Hide();

補充,這樣寫最簡單
private void Form1_Shown(object sender, EventArgs e)
{
     this.Hide();  // 表單隱藏
}

避免被重覆執行
if (System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1)
{
this.Close();
}

不過我也好奇的查一下winform生命週期,也測試了一下下,目前還不是很了解為什麼,有空再查資料。

補充
因為表單還沒有初始化,這個時候隱藏的話會無效,所以改到Form1_Shown

MSDN
http://msdn.microsoft.com/zh-tw/library/86faxx0d(v=vs.110).aspx

應用程式啟動與關閉事件
Form 和 Control 類別會公開一組和應用程式啟動與關閉有關的事件。 當 Windows Form 應用程式啟動時,會以下列順序引發主要表單的啟動事件:

1.Control.HandleCreated
//發生於為控制項建立控制代碼時。
/*第一次顯示 Control 時,會建立控制代碼。 例如,如果建立了 Visible 設定為 false 的 Control,在 Visible 設定為 true 之前,將不會引發 HandleCreated 事件。*/

2.Control.BindingContextChanged
//會在 BindingContext 屬性的值變更時發生。
/*若要透過 BindingContext 屬性加入新的 BindingContext 至 Control,請參閱 BindingContext 建構函式。
當藉由程式設計方式修改或使用者互動來變更 BindingContext 屬性時,會引發這個事件。*/

3.Form.Load
//發生在表單第一次顯示之前。
//您可以使用這個事件執行工作,例如配置表單所使用的資源。

4.Control.VisibleChanged

5.Form.Activated

6.Form.Shown

有空試試看下面這段
public partial class Form1 : Form   
  {   
     public Form1()   
{   
 InitializeComponent();   
this.WindowState = FormWindowState.Minimized;   
this.ShowInTaskbar = false
 SetVisibleCore(false);  
 }  
 protected override void SetVisibleCore(bool value)  
{  
 base.SetVisibleCore(value);  
 }  
  private void Form1_Load(object sender, EventArgs e)  
  {  
   }
 

沒有留言:

張貼留言