问题:
本地有两块屏幕,在winform窗口最大化情况下希望能够跨窗口进行拖动,发现无法拖动,必须手动退出最大化,才能按住窗口进行拖动。
观察其他windows应用,统一的行为是自动退出最大化,再进行拖动,也就是出问题的窗口的区别是无法自动退出最大化。
创建了一个新的窗口,发现全新的窗口是支持该功能的,说明是本地代码的修改导致了此问题。
逐个对窗口的属性做比较,最后发现是FormBorderStyle这个属性的原因,只要将FormBorderStyle设置成fix相关的属性,则均无法自动退出最大化。
官网信息
Form.FormBorderStyle Property (System.Windows.Forms) | Microsoft Learn
该属性从字面意思和效果上,其实是阻值用户对整个窗口进行大小重新拖拽的,当时设置fix也是希望阻值用户的此类行为,但是没想到对跨窗口拖动的行为产生了影响,并且实际影响的是窗口退出最大化的行为。