当我点击按钮时,我的表单转换很慢,我使用线程来形成一个表单效果,形成不透明度从0.1开始并增加数字。然后我有一个方法并从线程中的Form_Load启动方法。
private void RunTimer_Tick_Things()
{
if (flag)
{
while (this.Opacity <= cs.CheckMaxOpacityValue())
{
Thread.Sleep(cs.GetTimerSleepNumberToIncreaseOcacity());
if (this.Opacity == cs.CheckMaxOpacityValue())
{
thrdTimer.Abort();
break;
}
this.Opacity += cs.GetIncreasedOpacityValue();
}
}
else
{
while (this.Opacity >= cs.CheckMinOpacityValue())
{
Thread.Sleep(cs.GetTimerSleepNumberToDecreaseOpacity());
this.Opacity -= cs.GetDecreasedOpacityValue();
}
thrdTimer.Abort();
}
}
我有这种形式的按钮打开另一种形式。喜欢这个
private void button2_Click(object sender, EventArgs e)
{
Form2DatabaseSetup frm2 = new Form2DatabaseSetup();
StopThread();
this.Hide();
frm2.Show();
flag = false;
}
我的问题是,当我点击此按钮时,第二种形式正在缓慢打开。 考虑一下,单击按钮,然后隐藏第一个表单并等待1.5秒,然后打开第二个表单。 注意:第二种形式有线程和相同的功能。
有没有人经历过这个或者知道,对此案有所了解?
答案 0 :(得分:0)
起初我认为你的不透明度增加了0.01,所以15 * 100 = 1.5就是你所描述的,但是你发送的值后我可以看到增加的是0.06,所以我觉得你有一些问题所有的功能你有(GetTimerSleepNumberToIncreaseOcacity,GetIncreasedOpacityValue)。
尝试代替使用硬编码值的函数并逐步完成,
我使用此代码并且工作正常:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var f = new Form2();
f.Show();
new Thread(() =>
{
while (f.Opacity < 1)
{
Thread.Sleep(15);
//if (this.Opacity == cs.CheckMaxOpacityValue())
//{
// thrdTimer.Abort();
// break;
//}
f.Invoke((Action)delegate { f.Opacity += 0.06; });
}
}).Start();
}
}