C#带引导窗体的窗体设计方法:创建特殊窗体

目录

1.设计操作流程

2.实例

(1)Resources.Designer.cs

(2)Frm_Main.Designer.cs

(3)Frm_Main.cs

(4)Frm_Start.Designer.cs

(5)Frm_Start.cs

(6)生成效果


        很多时候。我们的窗体设计需要一个引导窗体。当打开一个项目的窗体时,默认的是先打开一个欢迎或介绍项目信息的引导窗体,几秒钟后再打开项目的主窗体。这几秒时间最重要的意义是等待主窗体加载程序完毕。

1.设计操作流程

        实现带引导窗体的窗体设计操作流程:在项目里先设计两个窗体,并把Form1改名为Frm_Main,把Form2改名为Frm_Start。切记在更改窗体名称的时候按下ENTER确认此更改影响到了整个工程。

        接着,把项目所需要的图片资源设计到图片资源管理器,并把图片设计为相应窗体的背景,stretch。这一步的操作,详见本文作者写的其他文章。

        进一步地,在Frm_Main窗体创建Load事件,在事件里定义Frm_Start的对象,并打开Frm_Start窗体。

        进一步地,在Frm_Start窗体创建Load事件、设计Timer组件,并设计一个Tick事件,再创建一个FormClosed事件;在其Load事件中启动定时器,设置定时器动作时间为10s,在定时器的Tick事件中设计为关闭窗体引导窗体;在其FormClosed事件设计为关闭定时器;

        好了,至此符合项目需要的操作流程设计完毕,下面上代码。

2.实例

(1)Resources.Designer.cs

//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.42000
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

namespace _193.Properties {
    using System;
    
    
    /// <summary>
    ///   一个强类型的资源类,用于查找本地化的字符串等。
    /// </summary>
    // 此类是由 StronglyTypedResourceBuilder
    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
    // (以 /str 作为命令选项),或重新生成 VS 项目。
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        
        /// <summary>
        ///   返回此类使用的缓存的 ResourceManager 实例。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_193.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   重写当前线程的 CurrentUICulture 属性,对
        ///   使用此强类型资源类的所有资源查找执行重写。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
        /// </summary>
        internal static System.Drawing.Bitmap C_编程词典 {
            get {
                object obj = ResourceManager.GetObject("C_编程词典", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        
        /// <summary>
        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
        /// </summary>
        internal static System.Drawing.Bitmap start {
            get {
                object obj = ResourceManager.GetObject("start", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
    }
}

(2)Frm_Main.Designer.cs

namespace _193
{
    partial class Frm_Main
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            SuspendLayout();
            // 
            // Frm_Main
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            BackgroundImage = Properties.Resources.C_编程词典;
            BackgroundImageLayout = ImageLayout.Stretch;
            ClientSize = new Size(367, 238);
            Name = "Frm_Main";
            Text = "软件主界面";
            Load += Frm_Main_Load;
            ResumeLayout(false);
        }

        #endregion
    }
}

(3)Frm_Main.cs

namespace _193
{
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }

        private void Frm_Main_Load(object sender, EventArgs e)
        {
            Frm_Start frm = new();
            frm.ShowDialog();
        }
    }
}

(4)Frm_Start.Designer.cs

namespace _193
{
    partial class Frm_Start
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            timer1 = new System.Windows.Forms.Timer(components);
            SuspendLayout();
            // 
            // timer1
            // 
            timer1.Tick += Timer1_Tick;
            // 
            // Frm_Start
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            BackgroundImage = Properties.Resources.start;
            BackgroundImageLayout = ImageLayout.Stretch;
            ClientSize = new Size(368, 240);
            Name = "Frm_Start";
            Text = "启动界面";
            FormClosed += Frm_Start_FormClosed;
            Load += Frm_Start_Load;
            ResumeLayout(false);
        }

        #endregion

        private System.Windows.Forms.Timer timer1;
    }
}

(5)Frm_Start.cs

namespace _193
{
    public partial class Frm_Start : Form
    {
        public Frm_Start()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 启动计时器,10s计时
        /// </summary>
        private void Frm_Start_Load(object sender, EventArgs e)
        {
            timer1.Start();
            timer1.Interval = 10000;
        }
        /// <summary>
        /// 关闭启动窗体
        /// </summary>
        private void Timer1_Tick(object sender, EventArgs e)
        {
            Close();
        }
        /// <summary>
        /// 关闭计时器
        /// </summary>
        private void Frm_Start_FormClosed(object sender, FormClosedEventArgs e)
        {
            timer1.Stop();
        }
    }
}

(6)生成效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/566592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HashData获得华为鲲鹏Validated认证 信创版图持续壮大

近日&#xff0c;经过一系列严格测试评估&#xff0c;酷克数据自研企业级HashData云数仓通过华为鲲鹏高阶调优认证&#xff0c;成功获得鲲鹏Validated技术认证书。 在本次Validated认证过程中&#xff0c;酷克数据携手北京鲲鹏联合创新中心&#xff0c;针对数据仓库的典型应用…

微信小程序实现支付功能——微信jsapi支付

微信小程序jsapi支付的实现涉及多个步骤&#xff0c;主要包括前端请求订单信息、后端处理订单并返回支付参数、前端调用jsapi进行支付等。以下是一个基本的实现流程&#xff1a; 1. 前端请求订单信息 在小程序中&#xff0c;当用户触发支付行为时&#xff08;例如点击购买按钮…

Vue之v-on事件修饰符的含义及使用

背景&#xff1a;Vue 拆封了一个组件&#xff0c;在组件里面会使用一个方法来改变父组件传过来的值&#xff0c; 但是在子组件里面操作父组件的数据变更&#xff0c;实在比较麻烦&#xff08;因为单向数据流&#xff09;&#xff0c; So 能不能直接在组件上面绑定事件方法呢&…

vue项目打包时因为图片问题报错

执行 npm run build命令打包项目时报错&#xff0c;看起来是图片的问题&#xff1a; package.json里面image-webpack-loader的版本是^7.0.1 解决方案&#xff1a; 1、先卸载 npm uninstall image-webpack-loader 2、用cnpm重新安装 cnpm install image-webpack-loader --save…

『FPGA通信接口』串行通信接口-IIC(2)EEPROM读写控制器

文章目录 1.EEPROM简介2.AT24C04简介3.逻辑框架设计4.随机读写时序5.仿真代码与仿真结果分析6.注意事项7.效果8.传送门 1.EEPROM简介 EEPROM (Electrically Erasable Programmable read only memory) 是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。在嵌入…

计算机视觉 CV 八股分享 [自用](更新中......)

目录 一、深度学习中解决过拟合方法 二、深度学习中解决欠拟合方法 三、梯度消失和梯度爆炸 解决梯度消失的方法 解决梯度爆炸的方法 四、神经网络权重初始化方法 五、梯度下降法 六、BatchNorm 七、归一化方法 八、卷积 九、池化 十、激活函数 十一、预训练 十二…

【Python-Pygame】

Python-Pygame ■ Pygame-简介■ Pygame-安装■ Pygame-Rect区域位置■ Pygame-Draw绘图函数■ Pygame-■ Pygame-■ Pygame-■ Pygame-事件监听■ Pygame-Event事件模块■ Pygame-游戏循环■ Pygame-Display显示模块■ Pygame-Time时间控制■ Pygame-Font文本和字体■ Pygame-…

2024企业数字化转型资料包(10G,1000+份,数字化转型有这份就够了!!!)

2022新时代数字政府建设与发展若干思考-119页.pptx 2023产业数字化建设方案-51页.pptx 2023人工智能与数字化转型的业财融合.pptx 2023企业数字化转型大数据湖一体化平台项目建设方案.pptx 2023供应链数字化转型顶层架构设计方案-37页.pptx 2023国企智改数转之道解决方案.pptx …

QT客户端开发的应用场景

QT 是一跨平台应用程序开发框架&#xff0c;支持多种操作系统&#xff0c;包括 Windows、macOS、Linux、Android、iOS 和嵌入式系统等。这使得 QT 非常适合开发需要在多种平台上运行的应用程序。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交…

花房短剧小程序视频怎么下载到本地#下载高手

本文就教你如何使用下载高手下载花房短剧小程序 本文用到的工具我已经给大家打包好了,有需要的自己取一下 链接&#xff1a;https://pan.baidu.com/s/1KtR6830x8GciKtNcSRhQMg?pwd1234 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享 1.首先退出微信,记得必须右…

【LeetCode刷题记录】21. 合并两个有序链表

21 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 …

AI大模型探索之路-资料篇:大模型开发相关地址信息收藏

文章目录 前言一、OpenAI大模型二、LangChain开发框架三、RAGA评估框架四、GLM大模型五、搜索服务1. Tavily Search API 六、文本LLM大模型七、多模态LLM模型八、模型排行榜1.大模型评测体系&#xff08;司南OpenCompass&#xff09;2.大模型排行榜&#xff08;DataLearner AI&…

校园能源消耗监测管理系统,为您提供节能减排方案

现如今 &#xff0c;在全球加快推动能源转型、减少碳排的背景下&#xff0c;节能减排已成为各行各业的共同诉求。作为最具示范效应的教育机构&#xff0c;学校在节能减排领域引领着重要的作用。 学效能源消耗监测管理系统是一套涵盖、教学楼、办公楼、图书馆、学生公寓、体育场…

SpringBoot+layuimini实现左侧菜单动态展示

layuimini左侧菜单动态显示 首先我们看一下layuimini的原有菜单显示格式 {"homeInfo": {"title": "首页","href": "page/welcome-2.html?t2"},"logoInfo": {"title": "LAYUI MINI","…

如何加盟共享wifi项目?了解套路有哪些?

自共享wifi项目推出在市场火爆后&#xff0c;各路资本都看到了该项目的广阔前景&#xff0c;纷纷开始研发程序&#xff0c;想要趁机分一杯羹。但对于普通人而言&#xff0c;独立研发程序显然不大现实&#xff0c;于是&#xff0c;共享wifi项目如何加盟便成为了绝大多数人最为关…

安卓手机如何改ip地址?探索方法与注意事项

在数字时代&#xff0c;IP地址成为了我们在线身份的重要标识。对于安卓手机用户而言&#xff0c;了解如何修改IP地址可能涉及多种场景&#xff0c;那么&#xff0c;如何安全、有效地进行这一操作呢&#xff1f;下面将为您提供相关方法&#xff0c;并探讨修改IP地址时的注意事项…

一句话或一张图讲清楚系列之——IDELAYE2的用法

主要参考&#xff1a; Xilinx IDELAYE2应用笔记及仿真实操-CSDN博客 xilinx原语介绍及仿真——IDELAYE2 & IDELAYCTRL_idelayctrl原语使用说明-CSDN博客 1 原理 IDELAYE2一般用于对输入lvds高速信号进行延时微调&#xff0c;可以把时钟和数据都单独微调&#xff1b;如果数…

OmniFocus Pro 4.2.1正式激活版 最好用的GTD效率工具

OmniFocus 是一款功能强大的任务管理软件&#xff0c;适合忙碌的专业人士。借助有助于平息混乱的工具&#xff0c;您可以在正确的时间专注于正确的任务。 OmniFocus Pro 4.2.1正式激活版下载 随时随地轻松创建任务&#xff0c;并通过项目、标签和日期进行整理。在任何设备上&am…

Python 基于docker部署的Mysql备份查询脚本

前言 此环境是基于docker部署的mysql&#xff0c;docker部署mysql可以参考如下链接&#xff1a; docker 部署服务案例-CSDN博客 颜色块文件 rootbogon:~ 2024-04-18 16:34:23# cat DefaultColor.py ######################################################################…

面试宝典(1)——数据库篇(MySQL)

面试宝典&#xff08;1&#xff09;——数据库篇&#xff08;MySQL&#xff09; 1.什么是索引&#xff1f; 索引是一种用于加快数据库查询速度的数据结构。 索引可以帮助数据库快速定位到数据库表中特定列的记录&#xff0c;从而加快数据检索和查询的速度。 通过在表的列上…