移動中にフォームを半透明にし、移動しなくなったときに不透明にする方法はありますか?私はForm_Move
運が悪かったのでイベントを試しました。
私は立ち往生しています、何か助けはありますか?
2835 次
2 に答える
4
フォームが半透明として読み込まれる理由は、フォームを開始位置に移動する必要があるためです。これにより、Move イベントがトリガーされます。不透明度が設定されているかどうか、フォームが完全にロードされているかどうかに基づいて、これを克服できます。
ResizeEnd イベントは、フォームの移動が終了した後に発生するため、次のようなものが機能するはずです。
bool canMove = false;
private void Form1_Load(object sender, EventArgs e)
{
canMove = true;
}
private void Form1_Move(object sender, EventArgs e)
{
if (canMove)
{
this.Opacity = 0.5;
}
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
this.Opacity = 1;
}
于 2009-10-18T08:01:53.153 に答える
2
それを正しく行うには、保持されているタイトルバーなどに応答するためにメッセージ処理をオーバーライドする必要があると思います。しかし、チートすることもできます。タイマーを使用するだけで、移動したときに少しの間不透明になります。連続動作動作:
[STAThread]
static void Main()
{
using (Form form = new Form())
using (Timer tmr = new Timer())
{
tmr.Interval = 500;
bool first = true;
tmr.Tick += delegate
{
tmr.Stop();
form.Opacity = 1;
};
form.Move += delegate
{
if (first) { first = false; return; }
tmr.Stop();
tmr.Start();
form.Opacity = 0.3;
};
Application.Run(form);
}
}
明らかに、これを微調整してフェードイン/フェードアウトなどすることができます。これは、全体的な概念を示すためだけのものです。
于 2009-10-18T07:37:59.063 に答える