Запустите код перед выходом из окна приложения C # - PullRequest
0 голосов
/ 11 мая 2018

Я довольно новичок в разработке на C # и пытаюсь запустить некоторый код, прежде чем пользователь полностью закроет приложение. Я пытался смотреть онлайн, но ничего не получил. Вот мой код, и он не работает. Спасибо:

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Console.WriteLine("Hello World!");

        }

        void DataWindow_Closing(object sender, CancelEventArgs e)
        {
            Console.WriteLine("Goodbey World!");
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Читая из поста вы хотите отобразить сообщение пользователю, когда он закрывает приложение.Поскольку вы новичок в C #, я бы предложил остаться с консольными приложениями, прежде чем переходить к WPF, который является очень хорошо разработанной и документированной средой, в которой он позволяет проектировать ваше приложение с использованием так называемого расширяемого языка разметки приложений XAML * 1002.*

Sidenote Console.WriteLine ("Hello World");будет распечатан в окно вывода по умолчанию и не должно показывать никаких других визуальных ссылок.

Тем не менее.Вы хотите вызвать событие Closing и внутри него вы захотите вызвать класс MessageBox и использовать одну из его функций, которая принимает в качестве параметра буквальную строку.MessageBox.Show("Goodbye user!");

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
    //When your application finished initializing it's components this will run
    MessageBox.Show("Hello User!");
        }

//This being the event
        private void mainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            MessageBox.Show("Goodbye User!");
        }
    }

Также как и XAML, поскольку вы перенаправляете событие из XAML (внешнего интерфейса) в бэкэнд

<Window x:Name="mainWindow" x:Class="HelloWorld.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:HelloWorld"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" Closing="mainWindow_Closing">
    <Grid>

    </Grid>
</Window>
0 голосов
/ 11 мая 2018

Вот способ управления действиями открытия и закрытия в WPF.

В разделе App.xaml откройте App.xaml.cs и измените его следующим образом.

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        private void App_Startup(object sender, StartupEventArgs e)
        {
            // Code for before window opens (optional);

            var mainWindow = new MainWindow();
            mainWindow.Show();

            mainWindow.Closed += Window_Closed;
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            // Code for after window closes goes here.
            MessageBox.Show("Goodbye World!");
        }
    }
}

И изменитеПримените файл App.xaml следующим образом:

<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp1"
             Startup="App_Startup" >
    <Application.Resources>

    </Application.Resources>
</Application>

Смена ключа здесь Startup="App_Startup".

Они упрощают точное понимание того, когда происходит каждое действие, так как он делает записьи точки выхода яснее.

Примечание. Это не будет работать, если вы хотите, чтобы пользователь мог отменить выход из приложения, но из вашего примера кода это не то, что вы ищете.

0 голосов
/ 11 мая 2018

Ваше окно консоли отображается на долю секунды, а затем сразу же закрывается. Вам нужно прочитать ключ у пользователя и дождаться ввода, чтобы он оставался открытым.

void DataWindow_Closing(object sender, CancelEventArgs e)
    {
        Console.WriteLine("Goodbey World!");
        Console.ReadLine();
    }

Предполагается, что ваша функция вообще пострадала.

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