datagridview 更新后表单分辨率突然改变

Posted

技术标签:

【中文标题】datagridview 更新后表单分辨率突然改变【英文标题】:Form resolution suddenly changes after datagridview update 【发布时间】:2021-10-25 07:30:30 【问题描述】:

我有这个问题:我的表单模块在运行时意外更改了分辨率。

我有一个包含 DataGridView 的表单模块,当我运行表单时一切正常,表单显示正确。 但是,当我在表单上拖放时,它会突然改变分辨率而我无法找到解释。

应用程序目标框架是.NET 4.5.2

我已经验证在调用DataGridView组件的Update和Refresh方法时会出现问题,但是尽管尝试了无数次我还是不明白问题是什么。

        this.dataGridView.BeginInvoke(new Action(() => this.dataGridView.Update()));
        this.dataGridView.BeginInvoke(new Action(() => this.dataGridView.Refresh()));

这是 Form 和 DataGridView 组件的设置

感谢大家的帮助

【问题讨论】:

我会检查您是否在窗口上有任何自动调整大小设置。它可能会尝试使窗口大小适合内容。 感谢@R.Czq AutoSize 的形式是假的,AutoScaleMode 是字体 您设备的 DPI / 字体缩放选项是什么? support.microsoft.com/en-us/windows/… @MarcelPiquet 然后我会尝试将 AutoScaleMode 设置为 none 并查看是否有任何影响。您也可以尝试使用 dataGridView 的 AutoSizeColumnsMode 并将其设置为 none。如果这两件事中的任何一个对您有帮助,那么您可以尝试找出导致问题的原因。你也可以尝试用类似的代码做一个模拟项目,看看你的代码的简化版本是否也会发生这种情况。 【参考方案1】:

我发现问题不在于表单的布局/属性,也不在于 dataGridView 组件设置,而是由第三方库触发:GemBox.Pdf,它在某种程度上对屏幕的 DPI 很敏感。

[assembly: System.Windows.Media.DisableDpiAwareness] 放入文件 AssemblyInfo.cs 解决了这个问题

非常感谢大家的帮助!!

【讨论】:

以上是关于datagridview 更新后表单分辨率突然改变的主要内容,如果未能解决你的问题,请参考以下文章

DataGridView 更改后如何更新数据库?

数据集更新vb.net后DataGridView不刷新

为啥屏幕的分辨率突然自己变了

使用来自另一个表单的数据更新 datagridview (C#)

C# 在更新或插入另一个表单时刷新 DataGridView

通过单击按钮刷新另一个表单 DataGridView