Поэтому я подумал, что перечисление поможет мне с состояниями. По сути, у меня есть небольшое приложение боковой панели, которое имеет 3 состояния:
Свернутый - где вы можете увидеть маленькую цветную прямоугольную панель, указывающую, что приложение открыто на рабочем столе.
Preview - в котором указано, что приложение открыто, и вы можете увидеть логотип.
Обычный - там, где видна вся боковая панель.
Теперь я настроил перечисление следующим образом:
public enum CurrentState
{
Minimized = 0,
Preview,
Normal
};
И я пытаюсь проверить CurrentState и переключиться на другое, как это, когда пользователь нажимает на всегда видимую панель:
// If Min=Set(Preview). If Preview=Set(Normal). If Normal=Set(Min).
if (State.HasFlag(CurrentState.Minimized))
{
State = CurrentState.Preview;
this.Location = new Point(
Screen.PrimaryScreen.WorkingArea.Right - _minimize.Size.Width - _logo.Size.Width,
this.Location.Y
);
}
else if (State.HasFlag(CurrentState.Preview))
{
State = CurrentState.Normal;
this.Location = new Point(
Screen.PrimaryScreen.WorkingArea.Right - this.Size.Width,
this.Location.Y
);
}
else
{
State = CurrentState.Minimized;
this.Location = new Point(
Screen.PrimaryScreen.WorkingArea.Right - _minimize.Size.Width,
this.Location.Y
);
}
И когда приложение загружается, я устанавливаю начальное значение:
CurrentState.Minimized ;, вот так:
CurrentState State = CurrentState.Preview;
Итак, это ожидаемое поведение:
Если форма свернута, переместите ее немного, чтобы она была в режиме предварительного просмотра. Если он находится в режиме предварительного просмотра, переместите его немного, чтобы он находился в обычном режиме. Если он находится в обычном режиме, снова установите значение Minimized.
Но при первом нажатии на всегда видимую панель она работает как положено. Он устанавливает его в режим предварительного просмотра и немного переместил форму.
Но , это так далеко. Когда он находится в режиме предварительного просмотра, он не переходит в обычный режим после повторного нажатия на панель, что означает, что в настоящее время невозможно вернуть его в обычный вид.
Я что-то здесь не так делаю?
Хотя это может быть необычно, это логично, и я не могу понять, где что-то идет не так.
Вот небольшое визуальное представление, чтобы лучше уточнить, что я имею в виду:
