有没有办法让表格在移动时半透明,然后在不再移动时变得不透明?我没有运气试过Form_Move
事件
我被困了,有什么帮助吗?
答案 0 :(得分: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;
}
答案 1 :(得分: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);
}
}
显然你可以调整这个以淡入/淡出等 - 这只是为了展示整体概念。