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:谢谢你的反馈。问题解决了。再次,非常感谢。。。