Я создал простую тестовую форму с FormBorderStyle = FixedToolWindow по умолчанию и добавил кнопку, которая будет переключаться между FixedToolWindow и SizableToolWindow при нажатии мыши.
Переключение FormBorderStyle между этими двумя, кажется, производит странный эффект, который вызывает много проблем в моем приложении. Проблема в том, что окно, кажется, меняет размер, и я не могу этого иметь. Я просто хочу изменить границу, мне нужно, чтобы размер формы оставался прежним.
Например, вот код кнопки:
private void button1_Click(object sender, System.EventArgs e) {
if(FormBorderStyle == FormBorderStyle.FixedToolWindow) {
System.Diagnostics.Debug.WriteLine("SWITCHING: FIXED -> SIZABLE");
FormBorderStyle = FormBorderStyle.SizableToolWindow;
} else {
System.Diagnostics.Debug.WriteLine("SWITCHING: SIZABLE -> FIXED");
FormBorderStyle = FormBorderStyle.FixedToolWindow;
}
}
И для отладки я использую это:
private void Settings_SizeChanged(object sender, System.EventArgs e) {
System.Diagnostics.Debug.WriteLine(this.Size);
}
А вот, когда я нажимаю кнопку переключателя, вывод:
SWITCHING: FIXED -> SIZABLE
{Width=373, Height=169}
{Width=383, Height=179}
SWITCHING: SIZABLE -> FIXED
{Width=383, Height=179}
{Width=373, Height=169}
Как я могу исправить это поведение? И под словом «исправить» я имею в виду, если это возможно, предотвратить это. Я хочу иметь возможность указать размер моей формы и оставаться таким, независимо от типа стиля рамки.
Кроме того, решение подкласса класса Form было бы для меня идеальным решением в случае, если у кого-либо возникнут идеи решить эту проблему с помощью такого метода.
EDIT:
Я сделал небольшое видео, чтобы продемонстрировать проблему. Первый тест показывает, что размер формы на самом деле не изменяется (визуально), только местоположение формы немного меняется; но значения для свойства Size изменяются, как вы можете видеть на выходных данных отладки. Во втором тесте, который вы увидите в выходных данных отладки, изменяются значения свойств формы Size и сам размер окна.
Пожалуйста, посмотрите здесь:
http://screencast.com/t/0vT1vCoyx2u