我有一个简单的System.Windows.Forms.Form
。
根据业务需求,一旦某些功能由于某些后台处理而变得可用,我就会增加表单的大小并使用附加控件(按钮等)打开以前隐藏的区域。对表单大小的更改是由后台线程使用 BeginInvoke
完成的。
这一切都运行良好。但是,如果用户在屏幕上拖动表单,并且恰巧在此期间调用了更改表单大小的方法,则大小更改不会生效(从技术上讲,表单会更改大小,但立即恢复到之前的大小)。
我通过设置 Form.Size
属性来更改表单大小,但尝试了其他方法,例如设置 Form.ClientSize
和调用 Form.SetBounds ()
。还尝试过 Form.SuspendLayout()
/Form.ResumeLayout()
并强制 Form.PerformLayout()
。
到目前为止,我尝试过的任何方法都不起作用,并且当它被移动时,表单拒绝更改大小。
最佳答案
将代码放入 Form_LocationChanged 事件中,以检测先前隐藏的区域是否可见(或者应该通过 bool 变量)并相应地调整表单大小。否则,ResizeEnd 事件会在移动结束后触发,请尝试这样做。
关于c# - 移动表单时,对 Form.Size 的更改不会生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155808/