如題,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)
{
}
}
沒有留言:
張貼留言