WPF从代码后面调用Window_Closing事件

时间:2018-09-23 11:10:59

标签: c# wpf events methods

最近我一直在尝试WPF。我当时正在构建一个小程序,但后来偶然发现了一个小问题。我试图从后面的代码中调用Window_Closing方法,它告诉我需要给它提供特定的参数,但是在试图从中调用它的方法中没有这些参数。

这是我的代码:

            private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
            {
                // My Window Closing code
            }

            private void Application_Exit(object sender, RoutedEventArgs e)
            {
                // Here is where I am trying to call it, giving a empty parameter with it.
                // But it doesn't seem to work.        
                Window_Closing(null, EventArgs.Empty)
            }

我想要的

如果调用了某个特定按钮,我希望调用Window_Closing事件。

知道解决方案的人吗?

3 个答案:

答案 0 :(得分:1)

在您的<form> <input type="text" name="sample[]" value="value1" /> <input type="text" name="sample[]" value="value2" /> </form>中,单击Designer并打开其Button。在此处选择“ property window”-“闪电”,然后选择Events事件以执行Click方法。有一个下拉列表,您应该可以选择它。如果没有,请在此处输入您的方法名称,然后按“ Enter”键,让VS生成代码隐藏方法。

答案 1 :(得分:1)

如下所示在XAML文件(MainWindow.xaml)中添加“ Window_Closing”和“ Close_Click”。

<Window x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp1"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800" Closing="Window_Closing">
<Grid>
    <Button x:Name="Close" Content="Close" Click="Close_Click" Width="100" Height="30"/>
</Grid>

然后在文件(MainWindow.xaml.cs)后面的代码中添加以下代码。在此,从按钮单击事件处理程序中调用窗口关闭命令,该按钮随后会关闭窗口,然后将自动调用“ Window_Closing”事件处理程序。

    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {

    }

    private void Close_Click(object sender, RoutedEventArgs e)
    {
        Close();
    }
}

答案 2 :(得分:0)

只需关闭窗口。然后将自动调用该事件,这就是开始的过程。

而且看起来,您尝试从Application_Exit调用它,它关闭所有窗口...所以....问题是什么?

只需在Window_Closing中放置一个断点,看看它会自动执行。如果没有,也许您应该将事件处理程序添加到所有Windows Window_Closing事件中。