2017-01-05 2 views
0

Я работаю над приложением winforms, используя MetroFramework. Я хочу программно изменить размер формы, чтобы на нее мог поместиться более крупный объект. Для этого я использую переключатель из рамки в объекте tabControl. Создание формы больше работает отлично, но когда я отключу переключатель, он не хочет сжимать форму.C# Изменение размера winforms не работает должным образом

private void tSynced_CheckedChanged(object sender, EventArgs e) 
{ 
    if (tSynced.Checked) 
    { 
     //Sync enabled 
     Console.WriteLine("Sync enabled"); 
     this.Size = new Size(this.Width + 300, this.Height); 
     this.MinimumSize = new Size(this.Width, this.Height); 
     this.MaximumSize = new Size(this.Width + 200, this.Height); 
    } else 
    { 
     //Sync disabled 
     Console.WriteLine("Sync disabled"); 
     this.Size = new Size(this.Width - 300, this.Height); 
     this.Width = 534; 
     Console.WriteLine(this.Size); 
     this.MinimumSize = new Size(this.Width, this.Height); 
     this.MaximumSize = new Size(this.Width, this.Height); 
    } 
} 

Как вы можете видеть, я экспериментировал с некоторыми методами, которые я знаю, просто чтобы дать ему попробовать и работать свой путь назад оттуда, но это не похоже на работу. Это кажется мне странным, так как первый метод (линия this.Size) действительно работает при создании формы больше. Ключ this относится к Form согласно Visual Studio. Кажется, он не пытается изменить размер tabControl, потому что я привязал его к правой стороне и правильно двигаюсь вместе с правой границей.

Журнал для this.Size вернет большое значение, которое составляет {Width=834, Height=354} в моем случае.

Я попытался сохранить начальные значения в переменной Size и восстановить его там (поскольку он будет учитывать изменение размера пользователем), но это не работает корректно.

Size oldSize; //Global variable 
private void initialize() 
{ 
    oldSize = new Size(this.Width, this.Height); 
    Console.WriteLine(oldSize); 
} 

this.Size = oldSize; //In the eventhandler 

Журнал будет возвращать правильное значение, которое в моем случае {Width=534, Height=354}. Но он отказывается использовать значение при настройке имущества this.Size еще раз ...

Что я имею в виду?

ответ

3

При увеличении формы вы устанавливаете минимальный размер текущего размера, но при уменьшении размера вы пытаетесь сбросить размер, пока параметр MinimumSize все еще установлен, поэтому форма не изменяется.

Все, что вам нужно сделать, это сбросить значение MinimumSize перед изменением размера.

+0

Eeewh, herpiederp! Я знал, что это должно быть что-то простое: p работает как шарм! Спасибо :) – MagicLegend

Смежные вопросы