C#线程生命周期,在窗体(设Form1)用线程启动另一窗体(设Form2)后,Form2闪现一下就关闭了
////Form1下的按钮事件//privatevoidbtn_Click(...){Threadthread=newThread(newThreadStart());/...
//
//Form1下的按钮事件
//
private void btn_Click( ... )
{
Thread thread=new Thread(new ThreadStart());
//thread.IsBackground=true;
thread.Start();
}
private void ShowForm()
{
Form2 form=new Form2(); //Form2是新建的另外一个窗体
form.Show();
}
怎么解决这个Form2窗体闪现的问题,我想让Form2一直显示
PS:我一定要用线程来调用ShowForm()这方法,所以不要问我为什么不直接调用(因为这只是一个例子) 展开
//Form1下的按钮事件
//
private void btn_Click( ... )
{
Thread thread=new Thread(new ThreadStart());
//thread.IsBackground=true;
thread.Start();
}
private void ShowForm()
{
Form2 form=new Form2(); //Form2是新建的另外一个窗体
form.Show();
}
怎么解决这个Form2窗体闪现的问题,我想让Form2一直显示
PS:我一定要用线程来调用ShowForm()这方法,所以不要问我为什么不直接调用(因为这只是一个例子) 展开
展开全部
方案一:
private void btn_Click( ... )
{
Form2 form=new Form2(); //Form2是新建的另外一个窗体
form.Show();
}
方案二:
private void button1_Click(object sender, EventArgs e)
{
Thread a = new Thread(new ThreadStart(fs));
a.Start();
}
delegate void af();
private void fs()
{
this.Invoke(new af(afd));
}
private void afd()
{
Form2 f = new Form2();
f.Show();
}
private void btn_Click( ... )
{
Form2 form=new Form2(); //Form2是新建的另外一个窗体
form.Show();
}
方案二:
private void button1_Click(object sender, EventArgs e)
{
Thread a = new Thread(new ThreadStart(fs));
a.Start();
}
delegate void af();
private void fs()
{
this.Invoke(new af(afd));
}
private void afd()
{
Form2 f = new Form2();
f.Show();
}
追问
感谢您的回答。
针对方案一:我在末尾备注说的很清楚了
针对方案二:不知您是否试过,我试过也是不行的
追答
我在百度上回复的帖子都会调试通过才会回答的,
这样吧,你把你的出错信息发出来,我来看一下是怎么回事。
展开全部
Form f1 = new Form();
f1.ShowDialog();
这样行吗?
f1.ShowDialog();
这样行吗?
追问
试过了,不可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form.show() 改成 form.ShowDialog()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询