Что мешает мне изменить размер (уменьшить размер) объекта формы Windows? - PullRequest
17 голосов
/ 26 августа 2010

У меня есть объект формы Windows, который содержит 3 объекта, древовидную структуру, richtextbox и tabcontrol. Они не пристыкованы к форме окон, но они закреплены (вверху + слева).

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

Размеры трех объектов устанавливаются вручную после изменения размера каждой формы с помощью приведенного ниже кода:

        treeView1.Height += (this.Height - oldHeight);
        richTextBox1.Width += (this.Width - oldWidth);
        tabControl1.Width += (this.Width - oldWidth);
        tabControl1.Height += (this.Height - oldHeight);
        oldHeight = this.Height;
        oldWidth = this.Width;

Ни один из объектов не имеет установленного минимального размера (все они равны 0,0 в течение всего процесса изменения размера)

Что мешает изменить размер формы до меньшего размера?

Ответы [ 7 ]

20 голосов
/ 26 августа 2010

Авторазмер (который был установлен в основном объекте формы) препятствовал уменьшению окна до размера, меньшего, чем объекты, содержащиеся в нем.Так как объекты в основной форме увеличивались при каждом экспансивном изменении размера, основная форма не могла уменьшаться после какого-либо увеличения размера. отключив Autosize на главном объекте Form, я смог восстановить полный контроль над изменением размера.

4 голосов
/ 23 апреля 2015

Если вышеприведенное не помогает, убедитесь, что для минимального размера формы не установлено значение, превышающее необходимое.

1 голос
/ 31 марта 2014

Щелкните правой кнопкой мыши Winform в Visual Studio -> выберите Свойства -> Будет установлен автоматический размер True -> Измените его на Неверно

ИЛИ

Включить эту строку в свой код

this.AutoSize = false;
0 голосов
/ 20 ноября 2018

Я следовал всем ответам здесь, ни один не работал для меня. Я пошел дальше и добавил отступы, и это сработало. Перейдите на вкладку свойств, выберите метку и добавьте отступы.

0 голосов
/ 04 октября 2018

Проверьте минимальную ширину и минимальную высоту

enter image description here

Дизайнерский вид:

enter image description here

Как вы можете видеть, если вы установили минимальную ширину и минимальную высоту, , в то время как для автоматического размера установлено значение false , то кнопки теперь будут того размера, который вам нужен :)

0 голосов
/ 16 декабря 2015

Может быть еще один способ исправить поведение формы, размер которой нельзя изменить с помощью обычного выбора мыши.

В связи с обсуждением выше, я обнаружил [используя VB.net в VS2010], что одна из моих стандартных форм Windows не будет изменяться при выборе мыши.Это как если бы FormBorderStyle был установлен в форму "Fixed".Даже изменение FormBorderStyle на SizableToolWindow не дало ожидаемого размера мыши.

Вот некоторые настройки формы из дизайна формы Свойства: Autosize: false AutoSizeMode: growonly Doublebuffered: true Включено: true FormBorderStyle: Sizable ImeMode: NoControl Locked: false AutoScaleMode: Font AccessibleRole: default

Все параметры свойства видимого или кодового свойства этой формы, а также все параметры свойства его конструктора также были идентичны другим формам в том же проекте, что позволило бы правильно изменять размер мыши.Очистка раствора и его восстановление также не устранили проблему замерзшей формы.Нажатие на «Развернуть» сработало, и так же, как и на «Свернуть».Размер формы может быть установлен кодом, как и ожидалось.Только изменение размера формы мышью не функционировало должным образом.

Я обнаружил, что желаемое изменение размера выделения мышью можно снова включить, задав в коде параметр:

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

Этот параметр был установлен на «шрифт» в дизайне формы, который также использовался в других формах, которые работали должным образом.

Тогда ... странно ... изменение его обратно с .Inherit на ".Font" в коде также позволило форме правильно изменить размер.

Эта настройка в коде (или .Inherit, или .ont), казалось, была критическим элементом для исправления проблемы изменения размера формы, в этом случае.Кажется, есть скрытые параметры, которые система не показывает пользователю, которые как-то мешают ожидаемой работе формы.

0 голосов
/ 31 мая 2012

Просто поместите все свои Controls в Panel и установите Dock свойство Panel на Fill.Я считаю, что это работает даже при Autosize, установленном в true.

...