Звучит так, будто вы должны открыть свою вторую форму модально.
В любом случае ваша проблема заключается в том, что вы создаете второй экземпляр вашей первой формы, который, я полагаю, называется Load
при попытке выйти из вашей второй формы.
Существует много способы обойти это.
Вы можете иметь один класс, управляющий навигацией между формами, который уменьшит их зависимость друг от друга, или вы передадите ссылки между ними, так что ваша вторая форма может показать первую перед закрытием .
edit Хорошо.
- Я создал новое приложение формы Windows с помощью Visual Studio.
- Затем я добавил новую форму в проект.
- На каждую форму я добавил Кнопка.
- Я ничего не переименовал, следовательно, Form1 и Form2.
Это код каждого из них:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 newForm = new Form2(this);
newForm.Show();
this.Hide();
}
}
и
public partial class Form2 : Form
{
private readonly Form1 _parent;
public Form2(Form1 form1)
{
InitializeComponent();
_parent = form1;
}
private void button1_Click(object sender, EventArgs e)
{
_parent.Show();
this.Close();
}
}
Это то поведение, которое у вас после? Пожалуйста, игнорируйте все, что связано с позиционированием окна.
edit
Хорошо. Вот пример использования класса stati c для управления навигацией, он должен дать вам что-то для работы.
public static class NavigationClass
{
private static readonly Stack<Form> NavigationStack = new Stack<Form>();
public static void NavigateTo(Form formInstance)
{
if (formInstance == null) return;
if (NavigationStack.Count > 0)
{
var formToHide = NavigationStack.Peek();
formToHide.Hide();
}
else
{
RootForm?.Hide();
}
NavigationStack.Push(formInstance);
formInstance.Show();
}
public static void NavigateBack()
{
if (NavigationStack.Count > 1)
{
var formToClose = NavigationStack.Pop();
formToClose.Close();
var formToShow = NavigationStack.Peek();
formToShow.Show();
return;
}
if (NavigationStack.Count > 0)
{
var formToClose = NavigationStack.Pop();
formToClose.Close();
}
RootForm?.Show();
}
public static Form RootForm { get; set; }
}
Я установил Form1 как форму root в program.cs
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
NavigationClass.RootForm = new Form1();
Application.Run(NavigationClass.RootForm);
}
}
Тогда тогда Form1 и Form2, показанные выше, теперь изменились на:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
NavigationClass.NavigateTo(new Form2());
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
NavigationClass.NavigateBack();
}
}
Я думаю, что это должно дать вам что-то для go on.