我正在处理“右下停靠”弹出表单。表单的布局遵循以下结构:
- 标题
- 内容(短信)
- 页脚
此表单应根据其内容调整大小。我正在使用 SetBounds 使其增长到顶部而不是底部(请记住,窗口停靠在右下角)。
但是,当动画发生时,页脚会以一种非常糟糕的方式重新绘制自身,因为它的表单相对位置会不断更新。
我提供一个样本给你一个想法:
using System.Windows.Forms;
namespace AnimatorTest
{
public class Form3 : Form
{
Timer timer = new Timer();
public Form3()
{
timer.Interval = 30;
timer.Tick += timer_Tick;
// Create 3 test buttons
for (int i = 0; i < 3; i++)
{
Button b = new Button() { Dock = DockStyle.Bottom };
b.Click += (s, e) => timer.Start();
b.Text = "Click and watch how ugly I am during the animation.";
Controls.Add(b);
}
Height = 100;
StartPosition = FormStartPosition.CenterScreen;
}
void timer_Tick(object sender, System.EventArgs e)
{
int desiredHeight = 500;
int difference = desiredHeight - Height;
int change = difference / 6;
if (System.Math.Abs(change) < 1)
{
SetBounds(Left, Top - difference, Width, Height + difference);
timer.Stop();
}
else
{
SetBounds(Left, Top - change, Width, Height + change);
}
}
}
}
我真的没有任何想法解决这个问题。谢谢。