Разрешение формы внезапно меняется после обновления datagridview

#c# #winforms #datagridview #resolution

Вопрос:

У меня такая проблема: мой модуль формы неожиданно меняет разрешение во время выполнения.

У меня есть модуль формы, который содержит представление DataGrid, и когда я запускаю форму, все в порядке, форма отображается правильно. Однако, когда я перетаскиваю форму, она внезапно меняет разрешение, и я не могу найти объяснения.

Форма перед перетаскиванием
Форма после перетаскивания

Целевой платформой приложения является .NET 4.5.2

Я проверил, что проблема возникает при вызове методов обновления и обновления в компоненте DataGridView, но, несмотря на бесчисленные попытки, я не понимаю, в чем проблема.

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

Ниже приведены сведения о форме и компоненте DataGridView

Настройки макета формы
Параметры макета DataGridView

Спасибо всем за помощь

Комментарии:

1. Я бы проверил, есть ли у вас какие-либо настройки автоматического изменения размера окна. Он может попытаться подогнать размер окна под содержимое.

2. спасибо @R. Czq Авторазмер формы является ложным, авторазмер-это шрифт

3. Каковы параметры масштабирования DPI / шрифтов вашего устройства? support.microsoft.com/en-us/windows/…

4. @MarcelPiquet Я бы затем попытался установить режим автоматического масштабирования в значение » нет » и посмотреть, окажет ли это какое-либо влияние. Вы также можете попробовать поиграть с режимом AutoSizeColumnsMode в представлении DataGrid и установить для него значение «нет». Если любая из этих 2 вещей поможет, вы можете попытаться определить, какая из них вызывает проблему. Вы также можете попробовать создать макет проекта с аналогичным кодом, чтобы посмотреть, произойдет ли это и с упрощенной версией вашего кода.

Ответ №1:

Я обнаружил, что проблема заключалась не в макете/свойствах формы и не в настройках компонента DataGridView, но она была вызвана сторонней библиотекой: GemBox.Pdf, которая каким-то образом была чувствительна к DPI экрана.

Ввод [assembly: System.Windows.Media.DisableDpiAwareness] в файл AssemblyInfo.cs решил проблему

Большое спасибо всем за помощь!!