• 一个比较完整的WindowsFormsApplication实现


    这是前两天课堂上的例子,提供了一个自定义WindowsFormsApplication的范例,主要包括如下的功能

    1. 单一实例

    2. 闪屏

    3. 登陆窗口

    4. 任务栏图标和菜单

    需要注意的是,WindowsFormsApplicationBase这个类是要添加Microsoft.VisualBisic.dll引用的

        class MyApplication : WindowsFormsApplicationBase
        {
            NotifyIcon taskBarIcon;
            public MyApplication(bool singleton)
                : base(AuthenticationMode.ApplicationDefined)
            {
                //设置单实例
                this.IsSingleInstance = true;
    
                
                //添加任务栏按钮
                taskBarIcon = new NotifyIcon();
                taskBarIcon.Icon = Properties.Resources.Northwind;
                ContextMenuStrip contextMenu = new ContextMenuStrip();
                contextMenu.Items.Add(
                    new ToolStripMenuItem(
                        "退出",
                        Properties.Resources.close,
                        (sender, eventArgs) =>
                        {
                            if (MessageBox.Show(
                                "你是否真的要退出?",
                                "确认",
                                MessageBoxButtons.YesNo,
                                MessageBoxIcon.Question,
                                MessageBoxDefaultButton.Button2)
                                == DialogResult.Yes)
                            {
                                Application.Exit();
                            }
                        }));
                contextMenu.Items.Add(
                    new ToolStripMenuItem(
                        "帮助",
                        Properties.Resources.help,
                        (sender, eventArgs) =>
                        {
                            MessageBox.Show("帮助文档还在制作中");
                        }));
    
                taskBarIcon.ContextMenuStrip = contextMenu;
                taskBarIcon.ShowBalloonTip(2000, "欢迎", "欢迎使用该软件", ToolTipIcon.Info);
                taskBarIcon.Visible = true;
            }
    
            public MyApplication() : this(true) { }
    
            protected override void OnCreateSplashScreen()
            {
                base.OnCreateSplashScreen();
    
                LoginForm login = new LoginForm();
                if (login.ShowDialog() != DialogResult.OK)
                {
                    Environment.Exit(-1);//这里不能用Application.Exit,因为当前是一个自定义的Application
                }
    
                this.MinimumSplashScreenDisplayTime = 2000;//最少显示两秒
                this.SplashScreen = new SplashForm();
    
            }
    
    
    
    
            protected override void OnShutdown()
            {
                base.OnShutdown();
                taskBarIcon.Dispose();
    
            }
            protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
            {
                base.OnStartupNextInstance(eventArgs);
                eventArgs.BringToForeground = true;
            }
    
    
    
            protected override void OnCreateMainForm()
            {
                base.OnCreateMainForm();
    
                this.MainForm = new MainForm();
            }
        }
  • 相关阅读:
    win32 tcp文件传输客户端
    Android窗口管理服务WindowManagerService对输入法窗口(Input Method Window)的管理分析
    和菜鸟一起深入学习国嵌实验之vim常用命令
    和菜鸟一起深入学习国嵌实验之linux常用命令
    和菜鸟一起深入学习国嵌实验之文件编程
    和菜鸟一起深入学习国嵌实验之gcc分步编译&&gdb调试
    和菜鸟一起深入学习国嵌实验之简单Makefile
    获得创建表脚本
    oralce中获得创建脚本
    所有数据库连接字符串
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1699358.html
Copyright © 2020-2023  润新知