该窗体我是用某个线程里的方法Application.Run(窗体Name);来Show出来的...就出现了部份控件无法显示....如:WinForm WF;private void Thread_Method()
{
 //这里是对WinForm窗体进行加工处理然后new WinForm();这就省略不写了...太长...也没必要知道
 
 //以上的对WinForm对象的WF进行加工后就再Run消息
 Application.Run(WF);
}private void Button_Click(object sender,Event.... e)
{
 Thread temp_thread=new Thread(new ThreadStart(Thread_Method));
}就是WF窗体显示出来后....有时可以完整的将所有的控件显示....有时部份控件无法显示....到底是啥原因会这样的呢???我自己感觉是因为窗体的显示是固定的时间内的,但可能是窗体过大,加载慢的话...就到达不了窗体要显示的时间内加载完...所以出现部分控件无法显示...所以我之前也试过用这样的方法来判断该要显示的窗体是否加载完整...但结果是不行...如下代码:
while (!WF.IsHandleCreated)
{
    Thread.Sleep(100);
}
if (WF.IsHandleCreated)
{
    MessageBox.Show("控件句柄创建成功。继续执行。");
    WF.Show();
}
else
{
    MessageBox.Show("控件句柄创建中,请稍候。");
}

解决方案 »

  1.   


    先感谢您的关注.我这个WinForm窗体是本来自己注册好的...所有控件都是已经设置好...在我以上所说的...对加工处理时,并没有对窗体做过任何的控件追加或是注册...加工处理,大多是对控件的属性做处理...所以可以排除控件注册问题...
      

  2.   

    呵呵。一下,,
    这个问题没有遇到过,倒是遇到过卸载的很慢的情况
    慢到自带的那个 application.restart命令都不起效果
      

  3.   


    该朋友说得对...但是我该怎么处理这个问题呢???因为我把System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;...对线程错误不捕捉....我想我的问题和这个关系非常大了...但是我以前在2003的时候写代码控制控件时,就不用这System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;,因为VS2003的这个内置对象的属性本来就是false的...而我现在用的是VS2005我也试过...一开始不把上面这个属性设置为false的话....当某些线程里的处理对控件是有关系的时候....可能会抛出异常...如以下图..我的实例的部份运动结果....:
      

  4.   


    不会出现异常啊...try catch也没反应...
      

  5.   


    不是自定义的...就是一个普通的RichTextBox...
      

  6.   

    碰到过,解决办法就是删掉重新放一个上去,还有看看 visible是不是false
      

  7.   


    我根本没必要对RichTextBox.Visible=false;....从头到尾都没有这样设置过啊.....
      

  8.   

    ......真的是说来话长,.....如果有哪位高手肯帮忙。请加QQ:372178765注明信息:CSDN我申请远程给你看看我的情况因为很多情况文字根本描述不清楚的