Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не меняется размер формы 
V
    Опции темы
Brain89
Дата 27.8.2011, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 18.1.2010

Репутация: нет
Всего: 2



Здравствуйте. Пишу небольшую программу, у которой есть полноэкранный режим. До перехода в него изменять размер формы при помощи мыши можно (у формы установлено свойство FormBorderStyle в значение Sizable). После перехода в полноэкранный режим и обратно такое изменение уже не получается. Ниже код перехода и возвращения:

Код

if (this.FormBorderStyle != FormBorderStyle.None) // Если окно в нормальном режиме
{
                // Сохранение состояния формы перед полноэкранным режимом
                stateBeforeFullscreen = this.WindowState;
                if (this.WindowState == FormWindowState.Maximized)
                    this.WindowState = FormWindowState.Normal;
                pointLocationBeforeFullscreen = this.Location;
                sizeBeforeFullscreen = this.Size;                
             
                // Разворот окна без границ на весь экран поверх всех остальных окон                
                this.SetVisibleCore(false);
                this.Location = new Point(0, 0); 
                this.FormBorderStyle = FormBorderStyle.None;
                this.WindowState = FormWindowState.Maximized;
                this.ShowIcon = false;
                this.TopMost = true;   
                this.SetVisibleCore(true);
            }
            else // Если окно в полноэкранном режиме
            {
                // Отображение формы в нормальном режиме 
                this.ShowIcon = true; 
                this.WindowState = stateBeforeFullscreen;
                if (this.WindowState != FormWindowState.Maximized)
                    this.Size = sizeBeforeFullscreen;
                this.FormBorderStyle = FormBorderStyle.Sizable;
                this.TopMost = false;
                this.Location = pointLocationBeforeFullscreen;            
}    


Подскажите, в чем может быть дело.

Это сообщение отредактировал(а) Brain89 - 27.8.2011, 13:14
PM   Вверх
Brain89
Дата 29.8.2011, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 18.1.2010

Репутация: нет
Всего: 2



Исправил проблему. Не могу сказать, что нашел правильное решение, потому как пришло оно методом тыка. Заключается в следующем: при выходе из полноэкранного режима свойство формы, отвечающее за возможность изменения размера, менять при выключенном VisibleCore. Вариант кода ниже:
Код

if (this.FormBorderStyle != FormBorderStyle.None) // Если окно в нормальном режиме
{
                // Сохранение состояния формы перед полноэкранным режимом
                stateBeforeFullscreen = this.WindowState;
                if (this.WindowState == FormWindowState.Maximized)
                    this.WindowState = FormWindowState.Normal;
                pointLocationBeforeFullscreen = this.Location;
                sizeBeforeFullscreen = this.Size;
                                           
                this.SetVisibleCore(false);
                this.Location = new Point(0, 0); 
                this.FormBorderStyle = FormBorderStyle.None;
                this.WindowState = FormWindowState.Maximized;
                this.ShowIcon = false;
                this.TopMost = true;        
                axWindowsMediaPlayer1.stretchToFit = true;
                this.SetVisibleCore(true);
            }
            else // Если окно в полноэкранном режиме
            {
                // Отображение формы в нормальном режиме
                this.ShowIcon = true; 
                this.WindowState = stateBeforeFullscreen;                           
                this.TopMost = false;
                this.Location = pointLocationBeforeFullscreen;
                this.SetVisibleCore(false);
                this.FormBorderStyle = FormBorderStyle.Sizable;  
                this.SetVisibleCore(true);
                if (this.WindowState != FormWindowState.Maximized)
                    this.Size = sizeBeforeFullscreen;    
}


Это сообщение отредактировал(а) Brain89 - 29.8.2011, 11:00
PM   Вверх
Brain89
Дата 31.8.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 18.1.2010

Репутация: нет
Всего: 2



Нашел причину проблемы и исправил ее как надо. Во-первых, изменять размер формы нельзя было и до перехода в полноэкранный режим. Точнее, изменять в одном направлении. Если же менять размер по диагонали, то размер менялся. Потому сразу не заметил. Чтобы таких казусов не было, необходимо правильно указать свойство AutoSizeMode. И сделать это надо, даже если свойство Autosize = false.

Код

this.SetAutoSizeMode(System.Windows.Forms.AutoSizeMode.GrowOnly);


P.S. Для полноты картины не забываем про свойства MaximunSize и MinimumSize.

Это сообщение отредактировал(а) Brain89 - 31.8.2011, 15:01
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.