c# listbox 添加一次就显示一行,请问下怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# listbox 添加一次就显示一行,请问下怎么实现相关的知识,希望对你有一定的参考价值。

1、我想点击button1 后,往 listbox 里添加数,有很多行,但是目前 点击按钮后要全部加载完才会一次性显示在listbox里,要等选用长时间才乍的到数据,我想实现运行的时候,每往里面添加一行就显示一行,要怎么做?
2、还有一个就是,点按钮开始加载的时候,界面就操作不了,卡死了一样,请问下这是要用多线程来解决还是用什么简单的办法解决? 多谢多谢!!!
例子: private void button1_Click(object sender, EventArgs e)


for (int i = 0; i < 50000; i++)

listBox1.Items.Add(i.ToString());




我想1 2 3 等添加一个数就显示一次,但现在就是必须全部加完才显示

可以先将数据放到一个数据集里面,把数据集赋给listbox,然后再操作数据集,没操作一次就重新给listbox赋一次值。追问

例子: for (int i = 0; i < 50000; i++)

listBox1.Items.Add(i.ToString());


我想1 2 3 等添加一个数就显示一次,但现在就是必须全部加完才显示

参考技术A 1、ListBox.Items.Add
2、只有使用多线程追问

例子: for (int i = 0; i < 50000; i++)

listBox1.Items.Add(i.ToString());


我想1 2 3 等添加一个数就显示一次,但现在就是必须全部加完才显示

追答

像for...50000这种属于耗时代码。应该丢给线程来做。
网友采纳的那个答案的代码可以作为参考。

参考技术B 可以用多线程操作,现在你添加数据到控件的主要代码是什么样的?追问

例子: for (int i = 0; i < 50000; i++)

listBox1.Items.Add(i.ToString());


我想1 2 3 等添加一个数就显示一次,但现在就是必须全部加完才显示

追答

下面代码可以实现,不过还有待改进:

        private void button1_Click(object sender, EventArgs e)
        
            Thread t = new Thread(() =>
            
                for (int i = 1; i <= 50000; i++)
                
                    this.listBox1.Invoke(
                        new Action(() =>
                    
                        this.listBox1.Items.Add(i);
                    ));
                
            );
            t.IsBackground = true;
            t.Start();
        

参考技术C 试试这个
listBox1.Refresh();

c#怎么在dataGridView里面添加一列?

左边这写数据是从数据库的表里查出来的,右变的数据前三列是数据库里的直接调出来的,但是数量那列我想后加,并且双击一次左面的dgv,右面对应的数据的数量就+1,怎么实现,求帮助

c#添加一列或一行具体代码和注释如下:
//
var d= new DataTable();

//想加几个列就加几个列。
d.Columns.Add("a");
d.Columns.Add("b");
d.Columns.Add("c");

//相加几个行就加几个行
//每行可以满员,也可以个别字段没有值(比如这里的c)
var r = d.NewRow();
r["a"] = 1;
r["b"] = 2;
d.Rows.Add(r);

//数据的类型也可以随意整,不限制
var r2 = d.NewRow();
r2["a"] = "wakaka";
r2["c"] = 2;
d.Rows.Add(r2);

//绑定上去
dataGridView1.DataSource = d;
参考技术A             DataTable dt = new DataTable();
            dt.Columns.Add("编号",typeof(Int32));
            dt.Columns.Add("名称", typeof(string));
            dt.Columns.Add("数量", typeof(string));

            DataRow dr = dt.NewRow();
            dr["编号"] = dataGridView1.CurrentCell.OwningRow.Cells["编号"].ToString();
            dr["名称"] = dataGridView1.CurrentCell.OwningRow.Cells["名称"].ToString();
            dt.Rows.Add(dr);

            dataGridView2.DataSource = dt;

你要的是把左边的部分信息带到右边的表格里吧!?

看懂代码,自己再改下!

追问

我能加一下您的q.q吗,然后细问问

追答

29077384你可以加我的qq,有问题可以留言!上班时间可以帮你远程看下!呵呵!

本回答被提问者采纳
参考技术B dgv.columns.add("","");两参数分别为列名和列标题名追问

那您知道怎么让数量增加吗,双击一次的时候数量是一,双击两次数量就是2...

追答

你在左边的DGV双击事件里给右边的单元格赋值就可以了啊!双击次数可以用变量存储的啊!

追问

我能加一下您的q.q吗

以上是关于c# listbox 添加一次就显示一行,请问下怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

c#怎么在dataGridView里面添加一列?

C#中 如何给Datagridview添加一列checkbox

如何做:C#写的C/S程序,DataGridView中要添加一列下拉选框,下拉选框的内容由DataTable的一列绑定.

C#在windowsform的datagridview表格里面添加一列删除按钮

C#中怎样将dataGridView中的新添加的一行数据添加到数据库中

SonarQube:添加一种方法来打破这种方法递归 C#