2

我有一个简单的System.Windows.Forms.Form. 根据业务需求,一旦某些功能由于某些后台处理而变得可用,我将增加表单的大小并使用其他控件(按钮等)打开以前隐藏的区域。表单大小的更改由后台线程使用BeginInvoke.

这一切都很好。但是,如果用户在屏幕上拖动表单,并且在此期间巧合地调用了更改表单大小的方法,则大小更改不会生效(从技术上讲,表单会更改大小,但会立即恢复到以前的大小)。

我通过设置Form.Size属性来更改表单大小,但尝试了其他方法,例如设置Form.ClientSize和调用Form.SetBounds()。也试过Form.SuspendLayout()/Form.ResumeLayout()和强迫Form.PerformLayout()

到目前为止我没有尝试过任何工作,当它被移动时,表单拒绝改变大小。

4

1 回答 1

2

将代码放入 Form_LocationChanged 事件中以检测先前隐藏的区域是否可见(或者应该通过布尔变量)并相应地调整表单的大小。否则 ResizeEnd 事件会在移动结束后触发,试试这个。

于 2012-04-15T02:49:54.753 回答