Как открыть недавно закрытую или скрыть форму

Я тщательно исследовал, но все еще не могу найти лучшее решение для этого.. У меня есть 3 кнопки, НАЗАД - ГЛАВНАЯ - ВПЕРЕД...

Это так же, как кнопки в левом верхнем углу браузера... и я пытаюсь сделать это в форме...

что у меня есть это..

код кнопки возврата

private void button1_Click(object sender, EventArgs e)
{
    this.Hide();
}

// simply hiding the form .. so that the previous form will be shown.. 

код кнопки домой это

private void button2_Click(object sender, EventArgs e)
{
    for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
    {
        if (Application.OpenForms[i].Name != "HomePage")
            Application.OpenForms[i].Close();
    }
} 

// this will show the HomePage form and close other forms whos name is not "HomePage"

Проблема в том, что когда я нажимаю кнопку "Назад", я прячу ее… как кнопка может открыть ранее закрытую или скрытую форму?

Я надеюсь, что вы можете помочь мне! Спасибо!

private void button3_Click(object sender, EventArgs e)
{
    ???????
}

2 ответа

Решение

Вам нужно будет сохранить ссылку на форму, которую вы хотите открыть снова.

Есть несколько вариантов сделать это, но если вы просто хотите позволить пользователю перейти "Вперед" один раз, вы можете просто сохранить ссылку на форму следующим образом:

internal class MyHistory {
    internal static Form LastForm;
}

// ........

private void button1_Click(object sender, EventArgs e)
{
    MyHistory.LastForm = this;
    this.Hide();
}

// ........

private void button3_Click(object sender, EventArgs e)
{
    MyHistory.LastForm.Show();
}

Конечно, вы можете поддерживать полный набор элементов истории и проходить назад / вперед через них, если вы хотите быть более полным, чем это.

Обратите внимание, что если вы .Close() ваша форма, вы не сможете открыть ее повторно, так как ссылка будет удалена после ее закрытия. Этот метод будет работать только если вы .Hide() он, который сохраняет действительный экземпляр формы, просто скрывает форму от взгляда пользователя.

Вы можете использовать список форм, который содержит все инициализированные формы. таким образом, вы можете скрывать, показывать, добавлять и удалять формы динамически.

List<Form> lstForms = new List<Form>();

затем при добавлении формы:

Form newForm = new Form();

lstForms.Add(newForm);

Скрытие формы:

lstForms(x).Hide(); //x = index of Form you want to hide

Показ формы

lstForms(x).Show(); //x = index of Form you want to hide

Удаление формы (например, при ее закрытии)

lstForms.RemoveAt(x);

таким образом, вы можете динамически работать с формами, и намного легче вести обзор, если у вас много форм...

Другие вопросы по тегам