C# C形在同时移动时闪烁
我已经建立了两个表单。第一个移动时,第二个也移动。 除了我移动第一个窗体外,所有操作都很好,第二个窗体在移动过程中闪烁。 如果我移动第二个窗体,第一个窗体将在移动过程中闪烁 我用的是这样的东西C# C形在同时移动时闪烁,c#,C#,我已经建立了两个表单。第一个移动时,第二个也移动。 除了我移动第一个窗体外,所有操作都很好,第二个窗体在移动过程中闪烁。 如果我移动第二个窗体,第一个窗体将在移动过程中闪烁 我用的是这样的东西 private void moveParentWindow(object sender, EventArgs e) { if (canMove == true) { if (frmM != null) { frmM.setSh
private void moveParentWindow(object sender, EventArgs e) {
if (canMove == true) {
if (frmM != null) {
frmM.setShouldMove(false);
frmM.StartPosition = FormStartPosition.Manual;
frmM.Location = Location;
frmM.Left = Location.X - 10 - frmM.Width;
frmM.setShouldMove(true);
}
}
}
每个表单都包含一个setter/变量“canMove”。该函数由窗体的移动事件触发,它移动第二个窗体,并触发第二个窗体的移动事件,该事件触发第一个窗体的移动事件。它创建了一个循环的事件,但效果不太好。这可以通过使用一个变量来控制彼此的事件触发来解决。现在,它工作得很好,但不能解决我的闪烁问题
不知何故,在移动过程中,另一个屏幕上似乎发生了一些重新绘制
有人对此有办法吗
谢谢。汉斯·帕桑的解决方案非常有效! 只设置一次位置,问题就解决了
frmM.Location = new Point(this.Location.X - 10 - frmM.Width, this.Location.Y);
这不是闪烁,尽管它类似于闪烁。只设置一次Location属性(即,也不要指定Left),这样窗口就不会来回跳转。所以frmM.Location=新点(this.Location.X-10-frmM.Width,this.Location.Y)@Hans Passant:谢谢你的反馈。问题解决了。再次,非常感谢。。。