Где живёт Form.Size?У меня есть некоторые супер странные проблемы - PullRequest
0 голосов
/ 13 апреля 2011

Каждый раз, когда я открываю свою форму, по умолчанию используется значение 328x192. Я изменю его на 328x170, сохраню свой проект, закрою его, затем снова открою.

Внезапно моя форма вернулась к размеру 328x192 вместо размера, в котором я ее сохранила (328x170).

Я зашел в свой Form.Designer.cs и попытался добавить эту строку кода:

this.Size = new System.Drawing.Size(328, 170);

И все же, когда я снова открываю проект, форма имеет размер 328x192. Я не знаю, откуда эта ценность, и это сводит меня с ума. Странная часть этой проблемы заключается в том, что она возникает случайно, где я получу дополнительный запас в нижней части формы. Я волнуюсь, что это попадет в производство, потому что даже когда я сохраняю его в правильных размерах, когда я снова открываю его, он возвращается к неправильным размерам.

Излишне говорить, что ошибки в графическом интерфейсе делают мою работу хуже на 1000%, как бы там ни было.

Ответы [ 4 ]

3 голосов
/ 13 апреля 2011

Do not редактировать сгенерированный дизайнером код.Дизайнер не сохраняет свойство Size, оно не является хорошей мерой для размера формы.Высота строки заголовка формы определяется предпочтениями пользователя.Вместо этого он сохраняет свойство ClientSize.Это важно, так как оно определяет, сколько места доступно элементам управления.

Иначе не очевидно, что заставило размер вернуться.Это может быть что-то столь же простое, как забыть проверить изменения, которые затем приведут вас в погоню за диким Гусем.

2 голосов
/ 13 апреля 2011

Вы пытались установить размер в форме из-за кода?

РЕДАКТИРОВАТЬ - как в:

public Form1()
{
   InitializeComponent();
   this.Size = new System.Drawing.Size(328, 170);

}

Я подозреваю, что вы можете каким-то образом изменить размер формы в активном окне дизайнера. Если вы установите код вручную после инициализации формы, дизайнер не сможет повлиять на это.

Если кто-то не связывается с тобой :)

0 голосов
/ 13 апреля 2011

Возможно ли, что у вас установлен MinimumSize? Или, может быть, свойство AutoSize имеет значение true. Любое из этих свойств может привести к тому, что ваше окно будет игнорировать свойство Size в некоторых сценариях.

В противном случае, я думаю, что это .ClientSize - это свойство, которое вам нужно посмотреть в файле Designer. Эти значения являются размером клиентской области (за вычетом границы окна).

0 голосов
/ 13 апреля 2011

Разница (из 22) может быть в заголовке. Я проверил один из моих проектов WinForms, и он имеет следующую строку в файле .designer.cs:

this.ClientSize = new System.Drawing.Size(292, 273);

при размере 300 х 300 в диалоговом окне свойств. Разница заключается в границе и размерах заголовка.

У вас есть строка, которая устанавливает это, и если это так, попробуйте изменить эти значения.

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