Вернуться к предыдущей форме внутри панели (C #) winform - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть панель инструментов, в которую я отправляю и удаляю формы. На боковых кнопках они отправляют форму на панель панели инструментов. После того, как пользователь завершит свою работу, они нажимают на другую кнопку, которая отправляет другую форму на панель инструментов. Как я могу вернуться к предыдущей форме, используя кнопку «Назад». Предположим, (Сведения о сотруднике) Кнопка отправки формы на панель инструментов, После выполненной работы пользователь нажимает (Все сотрудники) , и на панель приходит новая форма. Теперь проблема в том, что у меня есть «Кнопка возврата» Так, как получить предыдущую форму (в данном случае «Сведения о сотруднике») на панели инструментов.

Я пытался использовать статическую форму в главной форме, но таким образом я могу вернуться только на одну стадию. Например: (Данные сотрудника) (Все сотрудники)

Но что, если в строке есть несколько форм

(анкета сотрудника) (Форма для всех сотрудников) (Удалить форму сотрудника) (Etc)

Пространство имен Агентства. Формы {

public partial class MainMenuForm : Form
{
    public static Form StaticForm;       

    private void UpdateDashBoardForm(Form myform)    //use to get form and add to panel
    {
        if (myform == null)
        {
            return;
        }
        ClearDashBoard();
        myform.TopLevel = false;
        DashBaordPanel.Controls.Add(myform);
        myform.Dock = DockStyle.Fill;
        myform.Show();
    }

    private void ClearDashBoard()
    {

        foreach (Form item in DashBaordPanel.Controls)
        {

            if (!item.Equals(StaticForm))
            {
                item.Dispose();
            }
            else
            {
                item.Visible = false;
            }

        }
    }
}

i Ожидайте, что кнопка «Назад» должна получить все формы, которые ранее были добавлены на приборную панель. Подобные формы должны храниться в стеке, а после нажатия кнопки «Назад» должна быть получена самая верхняя форма из стека и извлечена из стека. enter image description here

Помощь: Мне нужно 2 функции 1) добавит форму в статический список. void addForm(Form obj);

2) Вернет самую последнюю форму из списка и удалит ее из списка Form getForm();

1 Ответ

1 голос
/ 18 апреля 2019

Итак, в этот момент вы даете следующую форму (myform) этому классу, а затем показываете ее и избавляетесь от текущего класса, который StaticForm, я прав?

Что вы можете сделать, это добавить вашу StaticForm в список, который продолжает добавлять списки, когда вы «строите» свою историю. Затем, когда вы захотите использовать кнопку «Назад», вы можете просто найти последнюю форму в истории и перезвонить этой форме.

Пример кода:

List<Form> FormHistory = new List<Form>( );
public static Form StaticForm;

private void UpdateDashBoardForm(Form myform)    //use to get form and add to panel
{
    FormHistory.Add( StaticForm );

    // Plus Your code.
}

private void GoBackToPreviousForm()
{
    if( FormHistory.Count > 0 )
    {
        // Plus what ever you need to do to go to the next form.
        FormHistory[ FormHistory.Count - 1 ].Show( );
        FormHistory.RemoveAt( FormHistory.Count - 1 );
    }
    else
    {
        // You are at the first loaded form.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...