C#,子线程创建一个有Timer控件的窗体,但是Timer在子线程结束后就实效,求解
有2个窗体,Fom1和Form2。在Form2中,有一TextBox控件,和一Timer控件,每1000毫秒事件textBox1.Text=DateTime.Now.To...
有2个窗体,Fom1和Form2。
在Form2中,有一TextBox控件,和一Timer控件,每1000毫秒事件
textBox1.Text = DateTime.Now.ToString();
在Form1中有2个Button控件,和全局变量Form2 f2;
Button1点击事件
Thread t = new Thread(A);
t.Start();
Button2点击事件
f4.Show();
public void A()
{
f2 = new Form2();
}
-----------------------------
点击Button1,Button2后,F2显示出来,但是Timer就实效了。
如果在A方法中,同时添加f2.showdialog(),可以发现子线程结束之前,Timer控件还没有实效
现在的问题就是,如何让子线程创建出来的窗体中的Timer不实效 展开
在Form2中,有一TextBox控件,和一Timer控件,每1000毫秒事件
textBox1.Text = DateTime.Now.ToString();
在Form1中有2个Button控件,和全局变量Form2 f2;
Button1点击事件
Thread t = new Thread(A);
t.Start();
Button2点击事件
f4.Show();
public void A()
{
f2 = new Form2();
}
-----------------------------
点击Button1,Button2后,F2显示出来,但是Timer就实效了。
如果在A方法中,同时添加f2.showdialog(),可以发现子线程结束之前,Timer控件还没有实效
现在的问题就是,如何让子线程创建出来的窗体中的Timer不实效 展开
1个回答
展开全部
我试了,这样的Timer并没有失效。
你是不是其他地方错了。
你是不是其他地方错了。
更多追问追答
追问
……按钮1创建子窗体
按钮2显示子窗体
通过多线程来创建,多线程……不是主线程创建
追答
Form5 f5;
//打开子线程
private void button5_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(aa));
t.Start();
}
private void aa()
{
f5 = new Form5();
}
//打开子窗体
private void button6_Click(object sender, EventArgs e)
{
f5.Show();
}
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
this.textBox1.Text = DateTime.Now.ToLongTimeString();
}
private void Form5_Load(object sender, EventArgs e)
{
this.timer1.Start();
}
private void Form5_FormClosing(object sender, FormClosingEventArgs e)
{
this.timer1.Stop();
}
}
你看嘛。你还不信
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询