C# – 移动时使表格半透明

是否有任何方法可以使表单在移动时半透明,然后在不再移动时变为不透明? 我没有运气就尝试过Form_Move事件。
我被困了,有什么帮助吗?

表单加载为半透明的原因是因为表单必须移动到起始位置,这会触发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; } 

为了正确地做到这一点我希望你需要覆盖消息处理以响应所持有的标题栏等等。但是你可以作弊,并且只是使用一个计时器,这样你移动时会让它变得不透明,所以连续运动:

 [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); } } 

显然你可以调整这个淡入/淡出等 – 这只是为了展示整体概念。