C# Timer控件 事件不起效果
privatevoidtimer1_Tick(objectsender,EventArgse){this.label1.Text=this.Opacity.ToStrin...
private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = this.Opacity.ToString();
this.Opacity -= 0.01;
if (this.Opacity<=0)
{
this.Opacity += 0.01;
}
我想让窗体从不透明 到透明,再到不透明 这样循环 但是去只能到0完全透明就没继续了...哪里出问题了 展开
{
this.label1.Text = this.Opacity.ToString();
this.Opacity -= 0.01;
if (this.Opacity<=0)
{
this.Opacity += 0.01;
}
我想让窗体从不透明 到透明,再到不透明 这样循环 但是去只能到0完全透明就没继续了...哪里出问题了 展开
5个回答
展开全部
你每次都先减掉0.01,再加上0.01
透明度总是保持在0.01,你当然看不见form了
如果要渐进的从不透明 到透明,再到不透明
那么应该设置标志位,到0的时候开始加0.01
到1的时候再开始减0.01
private bool increase;
private bool decrease;
private void timer1_Tick(object sender, EventArgs e)
{
this.textBox1.Text = this.Opacity.ToString();
if (this.Opacity <= 0)
{
increase = true;
decrease = false;
}
if(this.Opacity >= 1)
{
increase = false;
decrease = true;
}
if(increase)
{
this.Opacity += 0.01;
}
if(decrease)
{
this.Opacity -= 0.01;
}
}
透明度总是保持在0.01,你当然看不见form了
如果要渐进的从不透明 到透明,再到不透明
那么应该设置标志位,到0的时候开始加0.01
到1的时候再开始减0.01
private bool increase;
private bool decrease;
private void timer1_Tick(object sender, EventArgs e)
{
this.textBox1.Text = this.Opacity.ToString();
if (this.Opacity <= 0)
{
increase = true;
decrease = false;
}
if(this.Opacity >= 1)
{
increase = false;
decrease = true;
}
if(increase)
{
this.Opacity += 0.01;
}
if(decrease)
{
this.Opacity -= 0.01;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
透明度的最小值应为0
所以if (this.Opacity<=0)此判断有问题
应设置一个bool类型变量加以判断
参考如下代码
private bool flag = false;
private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = this.Opacity.ToString();
if (!flag)
{
this.Opacity -= 0.01;
if (Opacity == 0)
{
flag = true;
}
}
else
{
this.Opacity += 0.01;
if (Opacity == 1)
{
flag = false;
}
}
}
已经过测试!
不知何故,当Opacity<0.4时。小数点后变为很多位。
可将this.label1.Text = this.Opacity.ToString();
改为this.label1.Text = this.Opacity.ToString("F2");
即可解决
所以if (this.Opacity<=0)此判断有问题
应设置一个bool类型变量加以判断
参考如下代码
private bool flag = false;
private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = this.Opacity.ToString();
if (!flag)
{
this.Opacity -= 0.01;
if (Opacity == 0)
{
flag = true;
}
}
else
{
this.Opacity += 0.01;
if (Opacity == 1)
{
flag = false;
}
}
}
已经过测试!
不知何故,当Opacity<0.4时。小数点后变为很多位。
可将this.label1.Text = this.Opacity.ToString();
改为this.label1.Text = this.Opacity.ToString("F2");
即可解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看代码可知
当Opacity==0 的时候,Opacity 被赋值为0.01,紧接着在下一次程序执行中,Opacity 又变成0.所以看到完全透明。
这样修改
private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = this.Opacity.ToString();
this.Opacity -= 0.01;
if (this.Opacity<=0)
{
Opacity=1;
}
}
当Opacity==0 的时候,Opacity 被赋值为0.01,紧接着在下一次程序执行中,Opacity 又变成0.所以看到完全透明。
这样修改
private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = this.Opacity.ToString();
this.Opacity -= 0.01;
if (this.Opacity<=0)
{
Opacity=1;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
逻辑有问题,缺少一个判断增减的标志
可以使用label1来作为这个标志
可以使用label1来作为这个标志
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询