2013-04-08 96 views
2

我想,當用戶通過單擊關閉按鈕(紅色的X按鈕)確定窗口關閉發送方在WPF窗口

enter image description here

而不是當的形式,因爲關閉取消我的對話框中執行特定動作一些其他操作。我如何確定是否

private void Window_Closing(object sender, CancelEventArgs e) 

事件是由按鈕引發的?

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="60" Width="284" WindowStartupLocation="CenterScreen" 
    BorderBrush="#FFCCCCCC" 
    BorderThickness="2" 
    Background="#FFE0E0E0" 
    WindowStyle="SingleBorderWindow" 
    ShowInTaskbar="False" ResizeMode="NoResize" Closing="Window_Closing"> 
+0

只要有人關閉窗口,Window_Closing就會被觸發。通過交叉按鈕或通過this.close()。它並不需要從關閉按鈕中捕捉它。你想要達到什麼目的? – pordi 2013-04-08 11:36:33

+0

@PradipKT我想知道究竟是誰在發射結束事件。是this.close()調用取消按鈕。 – 2013-04-08 12:21:18

+0

::如果你想在交叉按鈕點擊的時候做任何明確的事情,那麼你可以在OnFormClosing中做到這一點..但按照MSDN ..當我們使用this.Close(me.Close-VB)或點擊十字按鈕都調用OnFormClosing。你想要一個關於如何搭建OnFormClosing的例子嗎?請告訴我。 – pordi 2013-04-08 12:26:08

回答

0
public MainWindow() 
    { 
     InitializeComponent(); 
     this.Closing+=new System.ComponentModel.CancelEventHandler(MainWindow_Closing); 

    } 
    private void MainWindow_Closing(object sender, EventArgs e) 
    { 
     MessageBox.Show("salman"); 

    } 
+1

@ salman你到底想說什麼? – 2013-04-08 12:22:16

+0

我想說,在MainWindow_Closing函數中你可以執行你想要的任務!如果它沒有幫助你ü請你詳細說明你的查詢! – YOusaFZai 2013-04-08 12:32:02

0

我的問題是什麼是關閉此窗口的其他方式?我的理解是發件人總是會成爲窗口。

我會做以下 - 對於所有按鈕或基於用戶的關閉 - 在窗口上設置一個公共屬性(如bool ClosedByUser),並將其設置爲「true」,然後調用Close()。

對於其他情況(例如通過單擊「X」來關閉),該屬性默認設置爲false。在關閉事件處理程序中,使用該屬性做出決定。

請注意:還有其他的問題和答案similar這對StackOverflow。

+0

你的建議是一個黑客,因爲它只會覆蓋一些特定的場景,爲此我們也必須保持相同數量的公共屬性,並且如果窗體由於應用程序崩潰而關閉,那麼將無法設置公共財產如何在未知情況下獲得發件人信息? – 2013-04-09 04:22:20