C# winfrom 窗体简单加载框实现详解

在这里插入图片描述
在这里插入图片描述

文章目录

  • 前言
  • 一、为什么需要加载框?
  • 二、简单加载框的实现方式
    • 2.1 使用模态对话框作为加载框
    • 2.2 结合BackgroundWorker和加载框实现更好的效果
    • 2.3 加载动画
  • 三、延伸内容
    • 3.1 自定义加载框样式
    • 3.2 使用第三方控件实现加载框
  • 结束语
  • 优质源码分享

C# winfrom 窗体简单加载框实现详解,在 WinForms 应用程序中,当执行一些耗时的操作(如从数据库读取大量数据、进行复杂的计算或者加载大型文件等)时,为了让用户知道程序正在工作而不是出现程序无响应的错觉,通常会使用加载框。加载框可以显示一个等待的提示信息,如 “正在加载,请稍候…”,并且可以带有一些动画效果(如旋转的图标)来表示程序仍在运行。

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、为什么需要加载框?

    在 WinForms 应用程序中,当执行一些耗时的操作(如从数据库读取大量数据、进行复杂的计算或者加载大型文件等)时,为了让用户知道程序正在工作而不是出现程序无响应的错觉,通常会使用加载框。加载框可以显示一个等待的提示信息,如 “正在加载,请稍候…”,并且可以带有一些动画效果(如旋转的图标)来表示程序仍在运行。

二、简单加载框的实现方式

2.1 使用模态对话框作为加载框

    创建加载框窗体:首先,在 WinForms 项目中添加一个新的窗体(例如命名为LoadingForm)。在这个窗体上可以添加一个Label控件用于显示加载提示信息,如 “正在加载,请稍候…”,还可以添加一个PictureBox控件并设置其Image属性为一个加载动画(如旋转的 GIF 图片)来增强视觉效果。

    在主窗体中调用加载框:在需要执行耗时操作的地方(如按钮点击事件),以模态方式显示加载框。例如:

     private void button1_Click(object sender, EventArgs e)
     {
         LoadingForm loadingForm = new LoadingForm();
         loadingForm.ShowDialog();
         // 在这里执行耗时操作,比如从数据库读取数据
         System.Threading.Thread.Sleep(5000);
         loadingForm.Close();
     }

    这种方式的缺点是,如果在ShowDialog之后的耗时操作是在主线程中执行的,UI 仍然会冻结。所以更合适的做法是将耗时操作放在后台线程中进行。

2.2 结合BackgroundWorker和加载框实现更好的效果

    修改加载框显示逻辑:在LoadingForm中添加一个公共方法(如SetProgressText)用于更新加载框中的提示信息。例如:

     public void SetProgressText(string text)
     {
         label1.Text = text;
     }
在主窗体中结合BackgroundWorker使用加载框:
csharp
     private void button2_Click(object sender, EventArgs e)
     {
         LoadingForm loadingForm = new LoadingForm();
         loadingForm.Show();
         backgroundWorker1.RunWorkerAsync();
     }
     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
     {
         // 假设这里是真正从数据库获取数据的代码
         for (int i = 0; i < 10; i++)
         {
             // 可以在这里模拟进度更新并传递给加载框
             ((BackgroundWorker)sender).ReportProgress(i * 10);
             System.Threading.Thread.Sleep(500);
         }
         List<string> data = new List<string>();
         data.Add("Data 1");
         data.Add("Data 2");
         e.Result = data;
     }
     private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
     {
         LoadingForm loadingForm = (LoadingForm)Application.OpenForms["LoadingForm"];
         loadingForm.SetProgressText($"已完成{e.ProgressPercentage}%");
     }
     private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
     {
         LoadingForm loadingForm = (LoadingForm)Application.OpenForms["LoadingForm"];
         loadingForm.Close();
         if (e.Error == null)
         {
             List<string> data = (List<string>)e.Result;
             dataGridView1.DataSource = data;
         }
         else
         {
             // 处理错误情况,比如显示错误消息
             MessageBox.Show("数据加载出错:" + e.Error.Message);
         }
     }

2.3 加载动画

闪动的星星加载动画

请添加图片描述

火箭升空加载动画

在这里插入图片描述

节凑大师加载动画
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d13b25d5d5154a7c86bafda02a69efe5.gif#pic_center)

三、延伸内容

3.1 自定义加载框样式

    自定义加载框样式:可以通过设置加载框窗体的FormBorderStyle、BackColor、TransparencyKey等属性来实现不同的外观效果。例如,设置TransparencyKey属性可以让加载框的某些部分(如背景)透明,从而实现更美观的效果。

3.2 使用第三方控件实现加载框

    使用第三方控件实现加载框:有一些第三方 UI 控件库提供了更丰富的加载框样式和功能。例如,DevExpress、Telerik 等控件库都有类似的等待提示框控件,这些控件通常具有更好的动画效果和自定义性。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------
 

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144366983(防止抄袭,原文地址不可删除)

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

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

相关文章

第三十九篇——条件概率和贝叶斯公式:机器翻译是怎么工作的?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 数学中的概率&#xff0c;看似和我们的生活没关系&#xff0c;其实它却是…

Leetcode 每日一题 202.快乐数

目录 题意 算法思路 过题图片 算法实现 代码解析 复杂度分析 题目链接 结论 题意 判断正整数 n 是不是快乐数。 快乐数定义&#xff1a; &#xff08;1&#xff09;每次将正整数替换为它每个位置上的数字的平方和。 &#xff08;2&#xff09;重复这个过程直到这个数…

CSS学习记录10

CSS图标 向HTML页面添加图标的最简单方法是使用图标库&#xff0c;例如Bootstrap。将指定的图标类的名称添加到任何行内HTML元素&#xff08;如<i> 或 <span>&#xff09;。下面的图标库中的所有图标都是可缩放矢量&#xff0c;可以使用CSS进行自定义&#xff08;…

1.3.4 输入输出技术

目录 接口的功能及分类主机与外设间的连接方式I/O接口的编址方式CPU与外设之间交换数据的方式 接口的功能及分类 输入/输出&#xff08;Input/Output, I/O&#xff09;系统是计算机与外界进行数据交换的通道。 I/O接口是连接主机和I/O设备的转换机构。由于I/O设备种类多样&…

Linux 权限及管理

目录 一、Linux权限 1、概念 2、超级用户和普通用户的相关操作 a. 添加用户&#xff0c;删除用户 b. 超级用户和普通用户的切换 c. sduo提权以及白名单设置 二、Linux权限管理 1、文件访问者的分类 2、文件访问类型和权限 a. 文件类型 b. 基本权限 3、文件权限值…

Linux网络测试指令

Ping Ping命令是一个网络工具&#xff0c;用于测试主机之间的可达性。它通过发送ICMP&#xff08;Internet Control Message Protocol&#xff09;回声请求消息到目标主机&#xff0c;并等待接收ICMP回声应答消息来判断目标是否可达以及测量往返时间。Ping命令对于诊断网络连接…

Java面试题精选:设计模式(二)

1、装饰器模式与代理模式的区别 1&#xff09;代理模式(Proxy Design Pattern ) 原始定义是&#xff1a;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许将请求提交给对象前后进行一些处理。 代理模式的适用场景 功能增强 当需要对一个对…

ICP和EDI许可证办理审核专用的网站系统源码程序下载—专供审核易过使用

在现代互联网及电子商务企业中&#xff0c;ICP许可证和EDI许可证不仅是法律要求&#xff0c;更是企业立足市场的重要基础。这两种许可证能够帮助企业爬梳合规问题&#xff0c;规避法律风险&#xff0c;并提升自身的信誉&#xff0c;增强客户的信任感。本文将详细介绍ICP许可证和…

运动场预定系统设计与实现

一、前言 随着人们健康意识的提高和体育运动的普及&#xff0c;各类运动场地的需求日益增长。传统的运动场预定方式往往依赖人工登记、电话预约等手段&#xff0c;存在效率低下、信息不透明、管理不便等问题。例如&#xff0c;使用者难以实时了解场地的空闲情况&#xff0c;需要…

基础暴力算法

线性枚举 线性枚举&#xff08;Linear Enumeration&#xff09;是一种暴力枚举的方法&#xff0c;它逐一检查每个可能的解&#xff0c;适用于搜索和枚举问题。 其核心思路是&#xff1a;对问题的所有可能情况逐一进行遍历&#xff0c;并针对每种情况判断是否满足条件&#xf…

第9章:CSS动画和过渡 --[CSS零基础入门]

1.过渡 CSS 过渡&#xff08;Transitions&#xff09;是一种简单而有效的方法&#xff0c;用于在元素的状态发生变化时创建平滑的视觉效果。以下是五个具体的例子&#xff0c;展示了如何使用过渡来增强用户交互体验。 示例 1: 按钮颜色和大小变化 这个例子展示了当用户将鼠标…

如何解决压测过程中JMeter堆内存溢出问题

如何解决压测过程中JMeter堆内存溢出问题 背景一、为什么会堆内存溢出&#xff1f;二、解决堆内存溢出措施三、堆内存参数应该怎么调整&#xff1f;四、堆内存大小配置建议 背景 Windows环境下使用JMeter压测运行一段时间后&#xff0c;JMeter日志窗口报错“java.lang.OutOfMe…

java问题解决_idea导入java项目时包名路径报错解决

第一个问题&#xff1a;idea导入java项目时包名路径报错解决 问题1&#xff1a;导入项目之后&#xff0c;没有运行导航 | 软件包名称 graph 与文件路径 src.graph 不对应 解决问题1&#xff1a; 打开项目结构 找到板块中的源代码目录 右键选择源代码 高亮之后就OK了 点击应用…

【青牛科技】拥有两个独立的、高增益、内部相位补偿的双运算放大器,可适用于单电源或双电源工作——D4558

概述&#xff1a; D4558内部包括有两个独立的、高增益、内部相位补偿的双运算放大器&#xff0c;可适用于单电源或双电源工作。该电路具有电压增益高、噪声低等特点。主要应用于音频信号放大&#xff0c;有源滤波器等场合。 D4558采用DIP8、SOP8的封装形式 主要特点&#xff…

qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系

qt-C语法笔记之mapToGlobal将组件&#xff08;控件&#xff09;中的本地坐标系&#xff08;局部坐标&#xff09;映射到全局坐标系 code review! 文章目录 qt-C语法笔记之mapToGlobal将组件&#xff08;控件&#xff09;中的本地坐标系&#xff08;局部坐标&#xff09;映射到…

C++核心day3作业

作业&#xff1a; 1.整理思维导图 2.整理课上代码 3.把课上类的三个练习题的构造函数写出来 函数全部类内声明&#xff0c;类外定义 定义一个矩形类Rec&#xff0c;包含私有属性length、width&#xff0c;包含公有成员方法&#xff1a; void set_length(int l); //设置长度v…

基于Spring Boot库存管理系统

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 基于Spring Boot库存管理系统 当下&#xff0c;如果还依然使用纸质文档来记录并且管理相关信息&#xff0c;可能会出现很多问题&#xff0c;比如原始文件的丢失&#xff0c;因为采用纸质文档&#xff0c…

FPGA 17 ,FPGA 与 SR-IOV虚拟化技术,高性能计算与虚拟化技术的结合(FPGA 与 SR-IOV 和 PCI,高性能计算与虚拟化的完美融合)

目录 前言 一. SR-IOV 的起源与发展 1. SR-IOV 的起源与时间线 2. SR-IOV 的诞生原因 3. SR-IOV 的详细介绍 二. SR-IOV 和 PCI 之间的关系 三. PCI 的起源与演进 1. PCI 的起源与时间线 2. PCI 的关键特性 四. FPGA 的独特魅力 1. FPGA 的定义与特性 2. FPGA 的内…

【深度学习】深刻理解Masked Autoencoders(MAE)

Masked Autoencoders (MAE) 是近年来自监督学习领域中的一项重要创新&#xff0c;尤其在计算机视觉领域取得了显著进展。随着深度学习的快速发展&#xff0c;自监督学习逐渐成为了一种重要的无监督学习方法&#xff0c;它通过从数据中学习表示而不依赖人工标签&#xff0c;极大…

Oracle报错ORA-01653: 表xx无法通过 8192在表空间中扩展

向Oracle 19g数据库中批量插入数据&#xff0c;当插入近2亿条数据后&#xff0c;报出如下错误&#xff1a; ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展 查看表空间&#xff0c;发现表空间大小已达到32G&#xff0c;表空间无法进行自动扩展了。&#xff08;初始…