wpf/c#:程序关闭的三种模式-kb88凯时官网登录

来自:
时间:2024-06-12
阅读:
免费资源网,https://freexyz.cn/

shutdownmode枚举类型介绍

shutdownmode是一个枚举类型,它定义了wpf应用程序的关闭方式。这个枚举类型有三个成员:

  • onlastwindowclose:当最后一个窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。
  • onmainwindowclose:当主窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。
  • onexplicitshutdown:只有当调用system.windows.application.shutdown方法时,应用程序才会关闭。

整理成表格如下所示:

枚举成员 含义
onlastwindowclose 当最后一个窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。
onmainwindowclose 当主窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。
onexplicitshutdown 只有当调用system.windows.application.shutdown方法时,应用程序才会关闭。

实践

mainwindow的xaml如下:


    
        
            
            
        
        
            
            0
        
        
        
        
    

mainwindow的cs如下:

using system;
using system.windows;
using system.windows.controls;
namespace applicationshutdown
{
    /// 
    ///     interaction logic for mainwindow.xaml
    /// 
    public partial class mainwindow : window
    {
        public mainwindow()
        {
            initializecomponent();
        }
        private void mainwindow_loaded(object sender, routedeventargs e)
        {
            shutdownmodelistbox.items.add("onlastwindowclose");
            shutdownmodelistbox.items.add("onexplicitshutdown");
            shutdownmodelistbox.items.add("onmainwindowclose");
            shutdownmodelistbox.selectedvalue = "onlastwindowclose";
            shutdownmodelistbox.selectionchanged  =
                shutdownmodelistbox_selectionchanged;
            application.current.shutdownmode = shutdownmode.onlastwindowclose;
        }
        private void shutdownmodelistbox_selectionchanged(object sender, selectionchangedeventargs e)
        {
            application.current.shutdownmode =
                (shutdownmode) enum.parse(typeof (shutdownmode), shutdownmodelistbox.selectedvalue.tostring());
        }
        private void newwindowbutton_click(object sender, routedeventargs e)
        {
            (new childwindow()).show();
        }
        private void explicitshutdownbutton_click(object sender, routedeventargs e)
        {
            var exitcode = 0;
            int.tryparse(appexitcodetextbox.text, out exitcode);
            application.current.shutdown(exitcode);
        }
    }
}

childwindow的xaml如下:


    

childwindow的cs如下:

using system;
using system.componentmodel;
using system.windows;
namespace applicationshutdown
{
    /// 
    ///     interaction logic for childwindow.xaml
    /// 
    public partial class childwindow : window
    {
        public childwindow()
        {
            initializecomponent();
        }
        private void childwindow_closing(object sender, canceleventargs e)
        {
            console.writeline(@"closing");
            var result = messagebox.show("allow shutdown?", "application shutdown sample",
                messageboxbutton.yesno,
                messageboximage.question);
            e.cancel = (result == messageboxresult.no);
        }
        private void childwindow_closed(object sender, eventargs e)
        {
            console.writeline(@"closed");
        }
    }
}

onlastwindowclose

当最后一个窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。

最后一个窗口关闭:

wpf/c#:程序关闭的三种模式

调用system.windows.application.shutdown方法:

wpf/c#:程序关闭的三种模式

onmainwindowclose

当主窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。

主窗口关闭:

wpf/c#:程序关闭的三种模式

或者调用system.windows.application.shutdown方法关闭,与上面效果相同,这里就不重复了。

onexplicitshutdown

只有当调用system.windows.application.shutdown方法时,应用程序才会关闭。

普通关闭:

wpf/c#:程序关闭的三种模式

关闭所有窗口之后,程序并不会停止。

调用system.windows.application.shutdown方法:

wpf/c#:程序关闭的三种模式

总结

本文介绍了wpf程序的三种不同的关闭模式,分别是onlastwindowclose、onmainwindowclose与onexplicitshutdown。

• onlastwindowclose:当最后一个窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。
• onmainwindowclose:当主窗口关闭或者调用system.windows.application.shutdown方法时,应用程序会关闭。
• onexplicitshutdown:只有当调用system.windows.application.shutdown方法时,应用程序才会关闭。

借助图解更好理解:

wpf/c#:程序关闭的三种模式

代码来源

[wpf-samples/application management/applicationshutdown at main · microsoft/wpf-samples (github.com)]( management/applicationshutdown)

免费资源网,https://freexyz.cn/
返回顶部
顶部
网站地图