WPF вызывает событие Window_Closing из кода позади - PullRequest
0 голосов
/ 23 сентября 2018

Недавно я экспериментировал с 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)
            }

Что я хочу

Если вызывается кнопка cenrtain, я хочусобытие Window_Closing для вызова.

Кто-нибудь, кто знает решение?

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Просто закройте окно.Тогда событие будет вызвано автоматически, вот для чего оно и должно начинаться.

И, как кажется, вы пытаетесь вызвать его из своего Application_Exit, который закрывает все окна ... так что ....В чем ваша проблема?

Просто установите точку останова в Window_Closing и посмотрите, что она выполняется автоматически.Если нет, возможно, вам следует добавить обработчик событий ко всем событиям Window_Closing в Windows.

0 голосов
/ 23 сентября 2018

Добавьте «Window_Closing» и «Close_Click» в файл XAML (MainWindow.xaml) следующим образом.

<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();
    }
}
0 голосов
/ 23 сентября 2018

В вашем Designer нажмите на Button и откройте его property window.Там вы выбираете «Events» - «молнию» и выбираете событие Click, чтобы выполнить ваш Window_Closing метод.Есть выпадающий список, в котором вы сможете выбрать его.Если нет, введите имя вашего метода и нажмите «Enter», чтобы VS сгенерировал метод code-behind.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...