「右下にドッキングされた」ポップアップフォームに取り組んでいます。フォームのレイアウトは次の構造に従います。
- ヘッダ
- 内容(テキストメッセージ)
- フッター
このフォームは、その内容に応じてサイズを変更する必要があります。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);
}
}
}
}
私は本当にこれを回避する考えがありません。ありがとう。