поэтому у меня есть эта программа, и я хочу, чтобы она не открывалась несколько раз, но, похоже, я могу ее освоить =/
private void button1_Click(object sender, EventArgs e)
{
if (forge.Checked)
{
successfully_injected openForm = new successfully_injected();
openForm.Show();
this.Close();
}
else if (!forge.Checked)
{
select_option openForm = new select_option();
openForm.Show();
}
}
Я хочу иметь возможность щелкнуть кнопку только один раз, а затем она перестанет показывать больше окон, но результат, который я получаю прямо сейчас, заключается в том, что я могу щелкнуть по ней, и она будет просто открывать окна каждый раз, когда я нажимаю, так что да =/
Вы должны иметь select_option openForm = new select_option();
и successfully_injected openForm = new successfully_injected();
на уровне формы... и показывать их только при нажатии кнопки.
Это винформс? Или ВПФ?
Обратите внимание, что OpenForms не надежен.
Вы можете проверить коллекцию ОпенФормс из объекта приложения.
if (forge.Checked)
{
successfully_injected openForm = Application.OpenForms.OfType<successfully_injected>().FirstOrDefault();
if (openForm == null)
openForm = new successfully_injected();
openForm.Show();
}
else
{
select_option openForm = Application.OpenForms.OfType<select_option>().FirstOrDefault();
if (openForm == null)
openForm = new select_option();
openForm.Show();
}
this.Close();
Вы должны определить свою основную форму как Singleton. Таким образом, во всем приложении можно использовать только 1 экземпляр, что также предотвращает появление нескольких форм.
Хороший пример этого можно найти в другом вопросе, похожем на ваш здесь.
дать владельцу новое окно
successfully_injected openForm = new successfully_injected();
Owner = openForm;
Hide();
openForm.Show();
Теперь у нового окна есть владелец и его можно просто закрыть и оно работает
Несвязанный: нет смысла проверять
if condition else if not condition
условие истинно или ложно, и если оно верно, то оно не ложно....if (forge.Checked) {...} else {...}
достаточно.