Форма загружается с минимальным размером (который отображает только строку заголовка), а не с размером, соответствующим значению, установленному для его свойств - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть форма, которая содержит Menu Strip, закрепленный сверху, Status Strip, закрепленный снизу, и Panel, закрепленный, чтобы заполнить все пространство между вышеупомянутыми элементами управления. Для формы я установил следующие атрибуты:

На этапе разработки:

AutoScaleMode: Dpi
AutoSize: false
AutoSizeMode: GrowOnly
DoubleBuffered: true
SizeGripStyle: Show

Во время выполнения (в конструкторе формы):

// Calculate the default size of the window on the basis of the ratio of the dimensions of the window to the dimension of the screen resolution of the machine used in development as the default dimensions of the window is aligned to that of the machine used to design it    
this.Size = new Size(Screen.GetWorkingArea(this.Location).Size.Width * (widthOfWindowInDesignPhase /horizontalResolutionOfTheDisplayInDesignPhase), Screen.GetWorkingArea(this.Location).Size.Height * (heightOfWindowInDesignPhase / verticalResolutionOfTheDisplayInDesignPhase)); 
this.MinimumSize = new Size(this.Size.Width, this.Size.Height);

Моя первая попытка решить эту проблему состояла в том, чтобы поэкспериментировать со свойствами AutoSize и AutoSizeMode, но я требую, чтобы это было установлено в предварительно установленные значения, так как изменение их не позволит пользователю изменить размер формы. Другой подход, который я попробовал, но также потерпел неудачу, установив свойства AutoSize вышеупомянутых элементов управления на false, чтобы заставить дочерние контейнеры формы не изменять размер.

Заранее спасибо.

PS Скриншот соответствующей формы:

Form loaded with the minimal size

1 Ответ

0 голосов
/ 15 февраля 2020

Ошибка числового значения c возникает при вычислении размера формы, поскольку операторы (widthOfWindowInDesignPhase /horizontalResolutionOfTheDisplayInDesignPhase) и (heightOfWindowInDesignPhase / verticalResolutionOfTheDisplayInDesignPhase) возвращают значение с плавающей запятой, которое не может быть сохранено как целое число.

Соответствующее утверждение выглядит следующим образом:

this.Size = new Size(Convert.ToInt32(Screen.GetWorkingArea(this.Location).Size.Width * (Convert.ToDouble(widthOfWindowInDesignPhase) / Convert.ToDouble(horizontalResolutionOfTheDisplayInDesignPhase))), Convert.ToInt32(Screen.GetWorkingArea(this.Location).Size.Height * (Convert.ToDouble(heightOfWindowInDesignPhase) / Convert.ToDouble(verticalResolutionOfTheDisplayInDesignPhase))));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...