C# 表格不';t使用计时器事件平滑调整大小
我在表单底部有一个网格控件,如果用户想显示/隐藏它,可以显示或隐藏它。因此,一种方法是很好地使用表单的自动大小,并将网格的可视属性更改为true或false,。。。 但我想让它凉快一点!所以我希望窗体的大小调整得慢一点,就像车库门一样!所以我在表格上放了一个计时器,开始在计时器滴答作响的时候一点一点地增加表格的高度 所以,当用户说显示/隐藏网格时,会出现如下情况:C# 表格不';t使用计时器事件平滑调整大小,c#,winforms,C#,Winforms,我在表单底部有一个网格控件,如果用户想显示/隐藏它,可以显示或隐藏它。因此,一种方法是很好地使用表单的自动大小,并将网格的可视属性更改为true或false,。。。 但我想让它凉快一点!所以我希望窗体的大小调整得慢一点,就像车库门一样!所以我在表格上放了一个计时器,开始在计时器滴答作响的时候一点一点地增加表格的高度 所以,当用户说显示/隐藏网格时,会出现如下情况: timer1.Enabled = true; timer1.Start(); 在timer_click事件中,类似
timer1.Enabled = true;
timer1.Start();
在timer_click事件中,类似这样的事件:
this.Height = this.Height + 5;
if(this.Height -10 > ErrorsGrid.Bottom )
timer1.Stop();
它可以工作,但仍然不完美。例如,它在一开始就滞后,停止调整大小(如一秒钟),然后再次开始调整大小……因此,现在考虑到这个想法,您建议我应该做哪些修改,以使它看起来更好,工作更好?试着改用
系统。Timers。Timer
。您可以阅读更多有关可用.net计时器之间差异的信息,但我认为您的问题归结为:
“[System.Windows.Forms.Timer]此计时器类引发的事件与同步
尊重Windows窗体应用程序中的其余代码。这意味着
正在执行的应用程序代码永远不会被
此计时器类的实例
这不会是System.Timers.Timer的问题。只需确保将该对象的SynchronizingObject
设置为表单,以便在UI线程上执行经过的事件
例如:
public partial class Form1 : Form
{
System.Timers.Timer timer = new System.Timers.Timer(100);
public Form1()
{
InitializeComponent();
timer.AutoReset = true;
timer.SynchronizingObject = this;
timer.Elapsed += timer_Elapsed;
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Height += 5;
if (this.Height -10 > ErrorsGrid.Bottom)
timer.Stop();
}
void button1_Click(object sender, EventArgs e)
{
timer.Start();
}
}
你试过使用另一个计时器类吗?有帮助吗?我有点假设你最初使用的是哪个,因为它有一个
滴答声事件。好消息,我不知道这是关于计时器的。我一去上班就去试试。现在在Mac上,无法在其中执行VS:)