C#实现WinForm窗体逐渐显示效果

简介:

C#实现WinForm窗体逐渐显示效果,这个博客园里面已经有其它人已经实现了,原理很简单,就是通过定时改变窗体的透明度(从0到1,即透明度从完全透明到不透明),我这里也是按照这个思路来实现的,但是我做的这个窗体是可复用的,即其它窗体继承自它后,就能实现渐显效果,代码如下:

复制代码
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace TEMS.Forms
{
    public partial class FormBase : Form
    {
        private Timer formTimer = null;

        /// <summary>
        /// 获取Opacity属性
        /// </summary>
        [DefaultValue(0)]
        [Browsable(false)]
        public new double Opacity
        {
            get { return base.Opacity; }
            set { base.Opacity = 0; }
        }

        public FormBase()
        {
            InitializeComponent();
            formTimer = new Timer() { Interval = 100 };
            formTimer.Tick += new EventHandler(formTimer_Tick);
            base.Opacity = 0;
        }

        private void formTimer_Tick(object sender, EventArgs e)
        {
            if (this.Opacity >= 1)
            {
                formTimer.Stop();
            }
            else
            {
                base.Opacity += 0.2;
            }
        }

        private void FormBase_Shown(object sender, EventArgs e)
        {
            formTimer.Start();
        }
    }
}
复制代码

以下是自动生成的代码:

  View Code

代码中我用NEW关键字覆盖了FORM类中的Opacity属性,使其只读并且不可编辑,有人可能会说这个属性的只读代码写得不规范,应该是去掉SET访问器或将SET设为私有,没错,标准的是应该这样做,而我为何不这样做呢?原因就是如果真正将属性设为私有,那么在其它窗体继承它的时候,由于我们一般都是先建一个标准窗体,标准窗体在创建时窗体的属性若有默认值的会自动生成初始化默认值,标准窗体创建后才将基类改为FormBase类,这样就会造成报错:Opacity是只读的,不能赋值,所以我们只可以让其外面看到是可读写,但实际子窗体的赋值不会生效,起到只读效果,当然了,如果你不觉得麻烦的话,你可以按标准属性设置,然后每建立一个窗体后,请先将Opacity的代码清除,然后再更改继承类,这样也是可以的。

使用就很简单了,与正常的窗体相同,在这里就不叙述了,大家可将以上代码复制到自己的项目中,便可直接使用。

其实通过以上代码的思路,我们可以设计通用的百叶窗切换效果的窗体基类,有空我会试着去实现这些功能,希望大家能支持,谢谢!

本文转自 梦在旅途 博客园博客,原文链接:http://www.cnblogs.com/zuowj/p/4450230.html  ,如需转载请自行联系原作者

相关文章
|
6月前
|
C#
C# WinForm发送Email邮件
C# WinForm发送Email邮件
C# WinForm发送Email邮件
|
6月前
|
Java 数据库 C#
C#winforms实现windows窗体人脸识别
C#winforms实现windows窗体人脸识别
|
2月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
28天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
1月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
73 0
|
1月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
84 0
|
3月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
189 3
C#winform中使用SQLite数据库
|
3月前
|
数据库
C#Winform使用NPOI获取word中的数据
C#Winform使用NPOI获取word中的数据
180 2
|
4月前
|
开发框架 数据可视化 C#
|
6月前
|
C#
C#如何实现窗体最小化到托盘
C#如何实现窗体最小化到托盘
70 0