Я думаю, что вы говорите что-то другое, чем ваш код.Предполагая, что вы имеете в виду то, что говорите, тогда ваш if-stat здесь должен быть противоположным:
private void Form2_Load(object sender, EventArgs e)
{
//if the start button isn't pressed, in 5 seconds, Form2 closes and Form1 opens
// Don't really need this because a user won't be able to click the button before the form loads
if (!startButtonWasClicked)
{
t2.Interval = 5000;
t2.Tick += new EventHandler(OnTimerTicker);
t2.Start();
}
//else start button is clicked
}
Порядок WinForms можно увидеть здесь , который вы можете посмотреть, есливас это интересует, но важно отметить, что метод Load () вызывается при открытии первой формы, формы 2.Это запускает таймер с обработчиком.
Даже если пользователь затем щелкает, как только он попадет в обработчик ('OnTimerTicker'), вам понадобится условие, чтобы проверить, следует ли открывать другую форму Form1.Что-то вроде:
private Timer t2 = new Timer();
private bool startButtonWasClicked = false;
private void Form2_Load(object sender, EventArgs e)
{
//if the start button isn't pressed, in 5 seconds, Form2 closes and Form1 opens
if (!startButtonWasClicked)
{
t2.Interval = 5000;
t2.Tick += new EventHandler(OnTimerTicker);
t2.Start();
}
//else start button is clicked
}
private void button1_Click(object sender, EventArgs e)
{
startButtonWasClicked = true;
// Stop the timer so it doesn't still run
t2.Stop();
bool IsOpen = false;
foreach (Form f in Application.OpenForms)
{
if (f.Text == "Form1")
{
IsOpen = true;
f.Focus();
break;
//if the form is already open, it will focus on that form
}
}
if (IsOpen == false)
{
Form1 f1 = new Form1();
f1.Show();
}
// Hide this window to be consistent
this.Hide();
}
private void OnTimerTicker(object sender, EventArgs e)
{
if (startButtonWasClicked) { return; }
t2.Stop();
Form1 f1 = new Form1();
this.Hide();//"closes form 2 after 5 seconds and opens form 1
f1.Show();
}
Есть и другие части, которые вы могли бы улучшить и в рефакторинге, а также скрывать / не скрывать последовательно, но я думаю, что это решает вашу проблему.