У меня проблемы с переключением форм в моих приложениях.Он имеет 2 формы:
- первая: имеет одну кнопку для перехода ко второй форме;
- вторая: имеет таймер для автоматического переключения на первую форму и кнопку для ручного переключения на первую форму.
Если я нажимаю кнопку, приложение выполняет метод logOut и работает.Если он выполняется с событиями таймера - он не работает.Мне нужна помощь, чтобы понять, почему это не работает таким образом?
Код для первой формы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private Form2 frmm2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
frmm2 = new Form2(this);
frmm2.Show(this);
this.Hide();
}
}
}
Вторая форма
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
private System.Timers.Timer tmr;
private Form2 frm2;
private Form1 frm1;
public Form2(Form1 f1)
{
InitializeComponent();
tmr = new System.Timers.Timer();
tmr.Elapsed += new ElapsedEventHandler(OnTimedEvent);
tmr.Interval = 10000;
tmr.Enabled = true;
frm1 = f1;
frm2 = this;
}
public void OnTimedEvent(object source, ElapsedEventArgs e)
{
tmr.Stop();
MessageBox.Show("Before timer event");
logOut();
MessageBox.Show("After timer event");
}
private void button1_Click(object sender, EventArgs e)
{
logOut();
}
public void logOut()
{
if (tmr != null)
{
tmr.Stop();
tmr = null;
}
/*
* It doesn't work directly. I'll try to do it in another way.
this.Hide();
this.Owner.Show();
this.Owner.Activate();
*/
frm1.Show();
frm1.Activate();
frm2.Close();
}
}
}
Спасибо за ответы!