2016-03-14 17 views
0

好的,我有一個關於窗體控件的問題。我想知道是否可以更改或添加退出按鈕在窗體上執行的操作。退出時更改窗體上的控制框

我可以很容易地最小化,最大化和退出窗體沒有問題。但這就是我所面對的。

我的應用程序有訪問登錄。登錄後,它會顯示在主窗體中。按下時有一個註銷按鈕,它會返回登錄表單。

但是,如果按下退出按鈕,它將退出主窗體,程序仍在運行,但無法將登錄窗體啓動。

所以我想要做的是,當主窗體通過紅色X退出時,我希望它進入登錄狀態。

我可以走了複雜路線:無邊框形式,活動的形式,自定義按鈕和等等等等,

,我認爲它會更容易更改或添加退出按鈕,返回到登錄表單。這可能嗎?

+0

存在您可以掛鉤的FormClosed事件。 – Blorgbeard

+0

我想我可以做一些事情,因爲表單狀態最小化,最大化..但是,我想通過表單主要退出可以改變..我將如何去使用FormClosed事件? – ivansystems

+0

只要處理該事件,並且按下注銷按鈕時所做的任何操作,我猜。您可以在設計器中找到FormClosed事件,即表單屬性,在事件選項卡上。請參閱https://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosed.aspx – Blorgbeard

回答

1

將按鈕單擊事件的邏輯移出單獨的方法。

private void button1_Click(object sender, EventArgs e) 
{ 
    OverrideFormExit(); 
} 

private void OverrideFormExit() 
{ 
    // execute the code that was previously in button1's click event 
} 

現在,您可以訂閱同樣的方法到Form's Closed事件中,以便在用戶關閉Form時執行。

例如,將在窗體的構造函數如下:

FormClosed += (s, e) => OverrideFormExit(); 

或者,您可以從登錄表單內訂閱主窗體的Closed事件,當你實例化的主要形式。顯然,我在猜你的代碼是什麼樣子的。

private void ShowMainForm() 
{ 
    FormMain frmMain = new FormMain(); 
    frmMain.Show(); 
    frmMain.FormClosed += (s, e) => this.Show(); 
    this.Hide(); 
} 
+0

格蘭特您是否使用我的Visual Studio代碼接近我所擁有的。 – ivansystems

+0

想象它可能是,假設你顯示新的表單,然後隱藏登錄表單。 :) –

+0

我的註銷按鈕正在使用。private void btnlogOut(..)this.Close();登錄lg =新登錄(); lg.Show();我想要主表單退出(紅色x)做同樣的 – ivansystems