wpf - Kør kode før du forlader et C # vindue program

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er temmelig ny til C # udvikling, og jeg forsøger at køre nogle kode, før brugeren afslutter applikationen helt. Jeg forsøgte at se online, men fik ikke noget. Her er min kode og det virker ikke. Tak:


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!");
        }
    }
}

Bedste reference


Her er en måde at kontrollere både åbnings- og lukningsaktioner i WPF.


Under App.xaml skal du åbne App.xaml.cs og ændre som følger.


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!");
        }
    }
}


Og skift App.xaml som følger for at bruge:


<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>


Nøgleændringen her er Startup="App\_Startup".


Disse gør det nemmere at forstå præcis, når hver handling forekommer, da det gør indgangs- og udgangspunkterne klarere.


Bemærk: Dette virker ikke, hvis du vil have, at brugeren kan annullere afslutte appen, men fra din eksempelkode, som ikke er det du leder efter.

Andre referencer 1


Din konsolvindue vises for en split sekund og derefter lukker med det samme. Du skal læse en nøgle fra brugeren og vente på input for at holde den åben.


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


Det antages, at din funktion bliver ramt overhovedet.

Andre referencer 2


Læsning fra posten, du vil vise en besked til brugeren, når de lukker programmet.
Da du er ny til C #, vil jeg foreslå at blive hos Console Applications før du går videre til WPF, hvilket er en meget veludviklet og dokumenteret ramme, hvor det giver dig mulighed for at designe din applikation ved hjælp af det, der kaldes XAML Extensible Application Markup Language [10]



   Sidenote Console.WriteLine ('Hello World'); Udskrives som standard til udgangsvinduet og skal ikke vise andre visuelle
  referencer.



Alligevel.
Du ønsker at ringe til begivenheden Lukning og inde i det, du ønsker at kalde på MessageBox-klassen og bruge en af ​​de funktioner, der tager en bogstav som en parameter. 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!");
        }
    }


Ligesom XAML, fordi du ruter begivenheden fra XAML (Frontend) til backend


<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>