关灯
开启左侧

[网页制作] c#实现winform窗体逐渐显示效果

[复制链接]
swmozowtfl 发表于 2015-7-10 20:46:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
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();
}
}
}
以下是自动生成的代码:
namespace tems.forms
{
partial class formbase
{
/// <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()
{
this.suspendlayout();
//
// formbase
//
this.autoscaledimensions = new system.drawing.sizef(6f, 12f);
this.autoscalemode = system.windows.forms.autoscalemode.font;
this.clientsize = new system.drawing.size(284, 262);
this.name = formbase;
this.text = formbase;
this.shown += new system.eventhandler(this.formbase_shown);
this.resumelayout(false);
}
#endregion
}
}
代码中我用new关键字覆盖了form类中的opacity属性,使其只读并且不可编辑,有人可能会说这个属性的只读代码写得不规范,应该是去掉set访问器或将set设为私有,没错,标准的是应该这样做,而我为何不这样做呢?原因就是如果真正将属性设为私有,那么在其它窗体继承它的时候,由于我们一般都是先建一个标准窗体,标准窗体在创建时窗体的属性若有默认值的会自动生成初始化默认值,标准窗体创建后才将基类改为formbase类,这样就会造成报错:opacity是只读的,不能赋值,所以我们只可以让其外面看到是可读写,但实际子窗体的赋值不会生效,起到只读效果,当然了,如果你不觉得麻烦的话,你可以按标准属性设置,然后每建立一个窗体后,请先将opacity的代码清除,然后再更改继承类,这样也是可以的。
使用就很简单了,与正常的窗体相同,在这里就不叙述了,大家可将以上代码复制到自己的项目中,便可直接使用。
其实通过以上代码的思路,我们可以设计通用的百叶窗切换效果的窗体基类,有空我会试着去实现这些功能,希望大家能支持,谢谢!

更多网页制作信息请查看: 网页制作
 

精彩评论8

正序浏览
alapScady 发表于 2015-10-27 19:26:41 | 显示全部楼层
 
…没我说话的余地…飘走
 
gevaemaidovef 发表于 2015-10-27 19:27:32 | 显示全部楼层
 
此贴有意思~
 
gevaemaidovef 发表于 2015-10-27 19:27:51 | 显示全部楼层
 
晕倒`````不要造我的谣言哦~~小心我打你pp~~嘿嘿~~~~
 
tohme 发表于 2015-10-27 19:28:11 | 显示全部楼层
 
感谢党和人民的关爱~~~
 
buingeEvineus 发表于 2016-2-15 10:38:52 | 显示全部楼层
 
哈哈 怎么说来眼睛小真的很好 哈 哈哈~~~~
 
mwxny 发表于 2016-2-15 10:38:53 | 显示全部楼层
 
挨骂也是幸福~~~
 
effoggikeftor 发表于 2016-2-15 10:39:37 | 显示全部楼层
 
疯了 这年头盗版还真多~~~~~~
 
gevaemaidovef 发表于 2016-2-15 10:39:59 | 显示全部楼层
 
教教我怎么seo
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

1粉丝

2503帖子

热门图文
热门帖子
排行榜
作者专栏

关注我们:微信订阅号

官方微信

APP下载

全国服务Q Q:

956130084

中国·湖北

Email:956130084@qq.com

Copyright   ©2015-2022  站长技术交流论坛|互联网技术交流平台Powered by©Discuz!技术支持:得知网络  

鄂公网安备 42018502006730号

  ( 鄂ICP备15006301号-5 )