当前位置:编程学习 > C#/ASP.NET >>

请问如何在serialPort_DataReceived中给不是DataReceived所在线程的textbox赋值

小弟把原有的C#程序移植到了wince6.0,原有程序没有问题,是从串口读取信息然后赋值给textbox。
但是在wince中不能使用System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;于是就报错了:

请问是不是应该使用委托,这块不是很懂,望指教,以下是部分代码:
       //读取出厂信息
        private void button1_Click(object sender, EventArgs e)
        {

                textBox1.Text = "";
                textBox7.Text = "";
                textBox36.Text = "";
                textBox37.Text = "";
                textBox2.Text = "";
                this.serialPort1.Write(imfall, 0, 2);
                flag = 4;
                
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

            while (this.serialPort1.BytesToRead > 0)
            {

                buffer[i] = this.serialPort1.ReadByte();
                i++;
            }

            if ((flag == 4) && (i > 31))
            {

                string imf1 = Convert.ToString(buffer[0]);
                textBox2.Text= imf1;
                string imf2 = Convert.ToString(buffer[1]);
                textBox7.Text = "20" + imf2;
                string imf3 = Convert.ToString(buffer[2]);
                textBox36.Text = imf3;
                string imf4 = Convert.ToString(buffer[3]);
                textBox37.Text = imf4;
                int t = 0;
                for (t = 4; t < 32; t++)
                {
                    if (buffer[t] == 32)
                        continue;
                    textBox1.Text = textBox1.Text + (char)buffer[t];
                }
                i = 0;
                flag = 0;
                int j = 0;
                for (j = 0; j < 30; j++)
                {
                    buffer[i] = 0;
                }
            }
         }


希望各位大侠能给我点例子,怎么修改比较好,不甚感激!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,