0

我正在处理“右下停靠”弹出表单。表单的布局遵循以下结构:

  • 标题
  • 内容(短信)
  • 页脚

此表单应根据其内容调整大小。我正在使用 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);
            }
        }
    }
}

我真的没有任何想法解决这个问题。谢谢。

4

0 回答 0