我用的这个
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;点了一个BUTTON后启动一个线程,线程去取数据,取完后在线程 里面更新datagridview的内容,结果一更新datagridview就不显示了。。 这是怎么回事啊。这个BUTTON在一个tagpage中,datagridview 在另一个tabpage中, 我发现如果将datagridview 放到跟button同一个tagpage就不会有这个问题。。如何 解决,, 谢谢回答 。。

解决方案 »

  1.   

    在取完数据后用tab.selectIndex切换到gridview的那个tabpage 
    好像是这里出问题了。
    我不用代码切换,在取完数据后,手动点到那个tabpage ,datagridview就没有消失。。 汗
      

  2.   

     private void button1_Click(object sender, EventArgs e)
            {
                
                new Thread(new ThreadStart(ProcessThread)).Start();
                //ProcessThread();
            }
            public void ProcessThread() {
                DataTable table = new DataTable();
                table.Columns.Add("进程名");
                table.Columns.Add("进程文件");
                table.Columns.Add("进程名称");
                table.Columns.Add("描述");
                table.Columns.Add("出品者");
                table.Columns.Add("属于");            String[] process = Regex.Split(this.textBox1.Text, "\r\n");
                foreach (String proName in process)
                {
                    DataRow row = table.NewRow();
                    String[] rs = getProcessInfo(proName);
                    row["进程名"] = proName;
                    row["进程文件"] = rs[0];
                    row["进程名称"] = rs[1];
                    row["描述"] = rs[2];
                    row["出品者"] = rs[3];
                    row["属于"] = rs[4];
                    table.Rows.Add(row);
                    row.AcceptChanges();
                }
                this.dataGridView1.DataSource = table;
                this.tabControl1.SelectedIndex = 1;
                
            }
      

  3.   

    先设置this.tabControl1.SelectedIndex = 1;
    再FindCiontrol查询dataGridView1重新绑定
      

  4.   


    调谁的FindControl方法啊?   我没怎么写过winform,不太清楚。