做了一个程序,当我打开一个窗体时,开始计算,然后计算结果在窗口显示,当DocumentCompleted后,执行打印窗体的东西,然后自动关闭窗体。遇到的问题是,有一类的结果的计算比较多、时间比较长,那个窗体挡在所有的窗体前,而且对它进行不了操作,也不能最小化。请问各位大大,怎么才能让这个窗体在计算时不妨碍别的窗体的操作呢。

解决方案 »

  1.   

    用了多线程了
    我那个窗体里面有WbbBrowser,结果出错了。
    当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。
    请问这个错误怎么解决呢?
      

  2.   

    UI的东西没事别用多线程你那计算里有很大的循环吧
    在循环的最后一句写上
    Application.DoEvents();//这句的作用就是在系统有空的时候把处理交还UI,这样界面就不死了。往往就是循环造成
      

  3.   

    6楼正解
    Application.DoEvents();
    加到你那个循环的内部,这样还是会一卡一卡的,但是不会一直卡了。 
    另外给你个建议,开始循环时,this.hide(); 结束计算时this.show();
      

  4.   

    一开始计算就弹个新窗口出来,显示一些loading或者couting之类的提示性文字,同时隐藏主窗体,计算完了再显示主窗体,关闭弹出的新窗体,干嘛要用到多线程呢? 
      

  5.   

    其实我就想让它快点或是别挡着主窗口,我想了别的一些方法,比如最小化窗口,或是Hide()窗口,可是这些东西都不会触发DocumentCompleted。
      

  6.   

    说说那个程序是怎么回事?我这里没有这个问题private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                this.Show();            
            }        private void Form1_Load(object sender, EventArgs e)
            {
                this.Hide();            
                webBrowser1.Url = new Uri("http://www.google.com");
            }
      

  7.   

    我想让它打印页面
         private void webReport_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                this.webReport.Print();
                Close();
            }
      

  8.   

    这样不能执行? private void webReport_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                this.Show();
                this.webReport.Print();
                this.Close();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                this.Hide();
                // Counting        
            }
      

  9.   

    this.webReport.Print();   这个没有执行
      

  10.   

    我这里正常的,你先打个断点, 看下是不是事件丢失了private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                this.Show();
                this.webBrowser1.Print();            
            }        private void Form1_Load(object sender, EventArgs e)
            {
                this.Hide();
                webBrowser1.Url = new Uri("http://www.google.com");
            }
      

  11.   

    你如果在load里面写了Hide()的话  是不会触发DocumentCompleted的  要是写show() 也要写在load里面啊
      

  12.   

    DocumentCompleted
    只有在载入页面完毕才会被触发
    和什么时候hide或者show无关啊