我有一个简单的System.Windows.Forms.Form
。
根据业务需求,一旦某些功能因某些后台处理而变得可用,我将增加表单的大小并打开以前隐藏的区域以及其他控件(按钮等)。表单大小的更改由后台线程使用BeginInvoke
完成。
这一切都很好。但是,如果用户在屏幕上拖动表单,并且在此期间巧合地调用了更改表单大小的方法,则大小更改不生效(从技术上讲,表单更改大小,但立即恢复到以前的大小。)
我通过设置Form.Size
属性来更改表单大小,但尝试了其他方法,例如设置Form.ClientSize
和调用Form.SetBounds()
。还尝试了Form.SuspendLayout()
/ Form.ResumeLayout()
并强制Form.PerformLayout()
。
到目前为止,我没有尝试过任何工作,当它被移动时,表单拒绝改变大小。
答案 0 :(得分:2)
将代码放入Form_LocationChanged事件中以检测先前隐藏的区域是否可见(或应通过bool变量)并相应地调整表单大小。否则ResizeEnd事件在移动结束后触发,请尝试。