以下代码可以在label控件中实时显示数据,可是我想在listview中也实时显示,这个线程不会写
public delegate void HandleInterfaceUpdateDelegate(string text);   
 //委托类型声明
private HandleInterfaceUpdateDelegate interfaceUpdateHandle1;
private HandleInterfaceUpdateDelegate interfaceUpdateHandle2;
private HandleInterfaceUpdateDelegate interfaceUpdateHandle3;
private HandleInterfaceUpdateDelegate interfaceUpdateHandle4;
private HandleInterfaceUpdateDelegate interfaceUpdateHandle5;
private HandleInterfaceUpdateDelegate interfaceUpdateHandle6;
private HandleInterfaceUpdateDelegate interfaceUpdateHandle7; 
private void UpdateTextBox1(string text)
        {
            label8.Text = text;            
        }
        private void UpdateTextBox2(string text)
        {
            label9.Text = text;
        }
        private void UpdateTextBox3(string text)
        {
            label10.Text = text;
        }
        private void UpdateTextBox4(string text)
        {
            label11.Text = text;
        }
        private void UpdateTextBox5(string text)
        {
            label12.Text = text;
        }
        private void UpdateTextBox6(string text)
        {
            label13.Text = text;
        }
        //private void UpdateListview(string text)
        //{
        //    listView1.Items.AddRange(LItem);
        //}
public  void Form1_Load(object sender, EventArgs e)
{
     sPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceived);    //事件挂钩           
     interfaceUpdateHandle1 = new HandleInterfaceUpdateDelegate(UpdateTextBox1);   //封装UpdateTextBox方法,实例化委托
     interfaceUpdateHandle2 = new HandleInterfaceUpdateDelegate(UpdateTextBox2);
     interfaceUpdateHandle3 = new HandleInterfaceUpdateDelegate(UpdateTextBox3);
     interfaceUpdateHandle4 = new HandleInterfaceUpdateDelegate(UpdateTextBox4);
     interfaceUpdateHandle5 = new HandleInterfaceUpdateDelegate(UpdateTextBox5);
     interfaceUpdateHandle6 = new HandleInterfaceUpdateDelegate(UpdateTextBox6);
     interfaceUpdateHandle7 = new HandleInterfaceUpdateDelegate(UpdateListview);
}
private void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
     this.BeginInvoke(interfaceUpdateHandle1, new string[] { iconts });
     this.BeginInvoke(interfaceUpdateHandle2, new string[] { strNam });
     this.BeginInvoke(interfaceUpdateHandle3, new string[] { strDep });
     this.BeginInvoke(interfaceUpdateHandle4, new string[] { strDTd });
     this.BeginInvoke(interfaceUpdateHandle5, new string[] { strDTt });
     this.BeginInvoke(interfaceUpdateHandle6, new string[] { strSta });
     //this.Invoke(new HandleInterfaceUpdateDelegate(this.UpdateTextBox1), iconts);
     //this.Invoke(new HandleInterfaceUpdateDelegate(this.UpdateTextBox2), strNam);
     //interfaceUpdateHandle7(strSta, li);   
     //string strXX = Convert.ToString(label8.Text + "," + label9.Text + "," + label10.Text + "," + strDnm);
     //ListViewItem li = new ListViewItem();
     //li.SubItems[0].Text = Convert.ToString(id);
     //li.SubItems.Add(Convert.ToString(DTd));
     //li.SubItems.Add(strXX);
     //li.SubItems.Add(strSta);
     //listView1.Items.AddRange(new ListViewItem[] {li});
     //id = id + 1;
}

解决方案 »

  1.   

    用线程+委托来访问From内的控件,并设置其值!!
      

  2.   

    声明委托:
    public delegate void  myinvole(string str);
    private void button3_Click(object sender, EventArgs e)
            {
                Thread t = new Thread(new ThreadStart(GetTextFun));
                t.Start();
            }
            private void GetTextFun()
            {
                setText("中华人民共和国!!!!");
            }
            private void setText(string str)
            {
                if (textBox1.InvokeRequired)
                {
                    myinvole _myinvole = new myinvole(setText);
                    this.Invoke(_myinvole, new object[] { str });
                }
                else
                {
                    this.textBox1.Text = str;
                }
            }
    这是线程访问控件的代码,例子比较简单,容易理解!!
      

  3.   

    我想要访问listview的线程,可是参数不知道怎么传递。高手能否给点提示或实例。谁的方法好,立即给100。其他的追加分
    谢谢回复
      

  4.   

    public delegate void  myinvole(string str);C# codeprivate void button3_Click(object sender, EventArgs e)
            {
                Thread t = new Thread(new ThreadStart(GetTextFun));
                t.Start();
            }
            private void GetTextFun()
            {
                setText("中华人民共和国!!!!");
            }
            private void setText(string str)
            {
                if (textBox1.InvokeRequired)
                {
                    myinvole _myinvole = new myinvole(setText);
                    this.Invoke(_myinvole, new object[] { str });
                }
                else
                {
                    this.textBox1.Text = str;
                }
            }这个就是啊,怎么叫给你呢,给你个例子,你也要自己研究性一下啊,这样对你好,给你代码,是对你的不负责任啊
      

  5.   

    在listView中实时显示应该也是一样的吧?将你那几个TextBox中的值一一加到里面去不可以吗?