我要做批量导入数据,写了一个循环.我想要在插如数据后在一个listbox中显示此时导入哪条数据,我的代码入下 using (OleDbConnection ob = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+temp.ToString().Trim()))
     {
        try
           {
              OleDbCommand cmd = new OleDbCommand("INSERT INTO DialList(DialNumber, Attempts)VALUES ('" + dial + "','" + att + "')", ob);
                 ob.Open();
                 vi = cmd.ExecuteNonQuery();
                 if (vi > 0)
                   {
                       this.listBox1.Items.Add("Add:"+ss);
                   }
             }
         catch (Exception ex)
            {
                  listBox2.Items.Add(ex.ToString());
            } 
代码效果不是我想要的!在插入时listbox不能一条条显示出来,而是当导入完成后全部显示请问谁有这效果显示代码

解决方案 »

  1.   

    你这样写显示不出来是很正常的,因为你这是单线程。
    没错,lstbox在加载数据的时候的确是一条一条添加的,但是由于你的form是单线程的,所以你的lstbox只是在最后一口气全部显示了,为什么??因为你的lstbox还没有刷新。解决办法:建立一个Thread,在vi = cmd.ExecuteNonQuery();之后启动起来。
    在Thread的子程序中使用listBox1.Items.Add()的方法。这样的话你会看到你所希望的效果,如果还没有刷新,那么你可以添加Refresh()这个函数在使用Add函数之后。我使用的是.net 1.1 ,这个框架下,线程的启动不能传入参数给子程序,如果你的也是1.1,那么你可以建立一个全局的static listBox 的对象,让这个对象获取listBox1的值,在子程序中操作这个全局的变量就可以了
      

  2.   

    hihi在this.listBox1.Items.Add("Add:"+ss);
    话后面加个this.listbox1.items.selectIndex=listbox1.count-1就可以了