美好的一天。我有一個問題,我使用的WPF,我無法找到正確的方式來關閉窗體form1。從其他表格關閉Wpf表格
WpfForm form1 = new WpfForm();
form1.close();
請我需要幫助。
美好的一天。我有一個問題,我使用的WPF,我無法找到正確的方式來關閉窗體form1。從其他表格關閉Wpf表格
WpfForm form1 = new WpfForm();
form1.close();
請我需要幫助。
您需要在第二個表格中引用您的第一個表單。然後你可以簡單地使用該參考來調用close。
有幾種方法來處理它。你可以添加一個屬性到你的第二個表單,以保存對你的第一個表單的引用。在創建第二個表單時,您將設置該屬性,然後在第二個表單中的任何事件應關閉第一個表單(例如,單擊一個按鈕)時,可以使用該引用關閉表單。
正如馬特所說你需要在你的第一種形式的第二種形式中有一個引用,所以假設你將有這個引用,你可以簡單地添加一個事件處理程序,如下面在第一個形式代碼當第二個表單的引用被設置爲一個實例時,類似於你的Window_Loaded事件將是一個很好的候選人。
secondWindow.Closing += (s, e) => this.Close();
上面是一個內聯事件處理程序,如果你寧願有更詳細的代碼,你可以這樣做:
secondWindow.Closing += CloseMe;
private void CloseMe(Object sender, EventArgs e)
{
this.Close();
}
櫃面你有興趣,飛碟雙向先生討論了內聯事件處理程序在另一個問題的警告here。
+1,因爲它是基於事件的方法 – 2012-03-06 15:03:23
至於說馬特和保利,你需要在你的第一種形式的引用,所以如果你想做到這一點沒有一個參考,你可以使用靜態訪問修飾符和代表喜歡這裏;
public delegate void Method();
private static Method close;
public Form1()
{
InitializeComponent();
close = new Method(Close);
}
public static void CloseForm()
{
close.Invoke();
}
接下來在你的第二個表格,您可以關閉的第一個沒有引用編寫簡單:
Form1.CloseForm();
你有什麼已經嘗試過?如果你不想緊密結合表單(不是一個好主意),你可能需要某種消息傳遞,但這些東西取決於你正在構建的系統,只有這幾行代碼我們無法猜測什麼是什麼你真的想做。 – Carsten 2012-03-05 16:40:07
WPF使用[Window class](http://msdn.microsoft.com/en-us/library/system.windows.window.aspx)並且具有[close](http://msdn.microsoft.com /en-us/library/system.windows.window.close.aspx)方法,你顯示你的'WpfForm'派生自窗口?那麼你面臨的問題是什麼? – gideon 2012-03-05 16:42:52