首页 新闻 会员 周边

winform 奇怪的问题高手进..

0
悬赏园豆:10 [已关闭问题] 关闭于 2013-04-14 12:44

1.Form2 打开后马上就关闭了???为什么??    

public partial class Form1 : Form    

{        

        public Form1()       

       {            

            InitializeComponent();        

       }

        private Thread tr;

        private void button1_Click(object sender, EventArgs e)        

        {           

          tr = new Thread(new ThreadStart(Do));           

          tr.IsBackground = true;           

          tr.Start();        

       }

        private void Do()        

        {            

           Form2 f = new Form2();

           f.Show();        

         }   

       }

KeVinDurant的主页 KeVinDurant | 初学一级 | 园豆:5
提问于:2013-03-22 14:36
< >
分享
所有回答(4)
0

Form2能够显示出来,说面没在后台运行。MessageBox是Form1的模式对话框,只能挡住Form1不能挡住Form2,被Form2

挡住也是正常。

Luke Zhang | 园豆:293 (菜鸟二级) | 2013-03-22 18:08

Form2能够显示出来,说面没在后台运行??什么意思呢?为什么马上就关闭了?

 

2.MessageBox是Form1的模式对话框,只能挡住Form1不能挡住Form2,被Form2  挡住也是正常

  能不能再解释清楚一点

谢谢了!!

支持(0) 反对(0) KeVinDurant | 园豆:5 (初学一级) | 2013-03-22 22:24

@KeVinDurant: 

1、如果你想让Form2显示出来,为什么要设置 tr.IsBackground = true呢?应该设为false吧;

2、MessageBox是Form1的模式对话框,对话框显示出来以后,会挡在Form1前面,除非你单机对话框上的按钮将其关闭,否则不能操作Form1;

3、MessageBox跟Form2没有关系。如果Form2出来的完,可能在屏幕的最前端,挡住屏幕上的所有东西,包括MessageBox;

4、为什么Form2会关闭,这个不能确定。如果前面三条都不能解决问题。你看看你的Form2是不是代码有问题。

支持(0) 反对(0) Luke Zhang | 园豆:293 (菜鸟二级) | 2013-03-25 11:14

@Luke Zhang: 我设置了 tr.IsBackground = false了,还是出来后马上关闭了。。你可以试试。。

支持(0) 反对(0) KeVinDurant | 园豆:5 (初学一级) | 2013-03-26 04:33
0

 f.ShowDialog();  这句话的意思不是模式化显示form2么,   你换成f.Show(); 试试  应该就不会挡住message了

动感超人z | 园豆:1 (初学一级) | 2013-03-22 18:10

换成换成f.Show()  。。forms2出来后马上就消失了。。你可以试试!!!

支持(0) 反对(0) KeVinDurant | 园豆:5 (初学一级) | 2013-03-22 22:26
0

form的显示最前端设置为false

画方软件 | 园豆:778 (小虾三级) | 2013-03-22 21:30

??什么意思。怎么设置。请指教

支持(0) 反对(0) KeVinDurant | 园豆:5 (初学一级) | 2013-03-22 22:24
0

 private void Do()        

        {         

this.Invoke(new MethodInvoker(delegate
{

 Form2 f = new Form2();

           f.Show();    

}));

}

把调用的方法改成这样就可以了。因为窗体的线程与你创建的线程不是同一个。

悟行 | 园豆:12559 (专家六级) | 2013-03-30 19:11

我知道这样封送到了主线程。。但是为什么那样不行呢!?

支持(0) 反对(0) KeVinDurant | 园豆:5 (初学一级) | 2013-04-01 22:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册