Это такая обыденная проблема, я думал, что смогу исправить ее немедленно, но нет. Размер и расположение моей формы сохраняются в настройках приложения при выходе для восстановления при следующем запуске приложения. Если пользователь закрывает форму, пока он сведен к минимуму, у меня возникают проблемы с восстановлением до нормального состояния. Форма восстанавливается как минимизированная, и нажатие на кнопку панели задач ничего не делает. Я сохраняю местоположение и размер в событии FormClosing, но если форма минимизирована, я сохраняю минимизированный размер (160, 40) и местоположение (-32000, -32000), что совершенно неверно для восстановления формы. Я хочу, чтобы форма никогда не восстанавливалась до минимума, но до последнего нормального размера и местоположения. Как-то я должен зафиксировать размер и местоположение до того, как форма будет сведена к минимуму и сохранит ее, а затем в FormClosing не сохраните размер и местоположение, если форма сведена к минимуму. Наверное, это не на 100% ясно, но я надеюсь, что у кого-то есть понимание.Как восстановить свернутую форму
FormClosing обработчик:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
Settings.Default.WindowLocation = Location;
Settings.Default.WindowSize = Size;
Settings.Default.WindowState = WindowState;
Settings.Default.Save();
}
Восстановление Код:
private void RestoreWindow()
{
Location = Settings.Default.WindowLocation;
if(Location.X == 0 && Location.Y == 0)
StartPosition = FormStartPosition.CenterScreen;
Size = Settings.Default.WindowSize;
WindowState = FormWindowState.Normal;
if(Size.Width > Screen.PrimaryScreen.WorkingArea.Width)
{
Location = new Point(0, Location.Y);
Size = new Size(Screen.PrimaryScreen.WorkingArea.Width, Size.Height);
}
if(Size.Height > Screen.PrimaryScreen.WorkingArea.Height)
{
Location = new Point(Location.X, 0);
Size = new Size(Size.Width, Screen.PrimaryScreen.WorkingArea.Height);
}
}
, пожалуйста, отправьте свой код обработчика формы Form_Closing. Благодарю. – Maciej
см. Также этот вопрос: http://stackoverflow.com/questions/2876240/winforms-finding-the-size-of-a-minimized-form-without-going-to-formwindowstate –