2013-04-08 95 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