c# - 移动表单时,对 Form.Size 的更改不会生效

标签 c# .net winforms

我有一个简单的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/

相关文章:

c# - DataGrid 方法 DataSource 未找到

c# - 使用两个嵌套循环的乘法表,但出现错误

c# - 单击菜单“添加项目”时如何根据特定模板添加项目?

c# - 什么时候在WPF中引发CollectionViewSource.Filter事件?

c# - 使用 C#/Mono 更改 Ubuntu 上的当前时区

c# - DataGridView 自动高度 - 如何自动调整 DataGridView 高度?

c# - 保存文本框的默认值c#

winforms - MessageBox::Show 中需要 C++/CLI 帮助

.net - 向 ASP.NET 程序员教授 ASP.NET MVC 的最佳学习资源是什么?

.net - 如何使 .NET 不使用注册的 TLB 来编码(marshal)对 COM 方法的调用?