您的位置:首页 > 编程语言 > C#

c# 控件,线程间操作(设置主窗体控件数据)

2011-09-30 17:21 471 查看
1、子线程设置主窗体控件的值,以TextBox为例

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Threading;

namespace WindowsApplication1

{

    public partial class Form1 : Form

    {

        private System.Windows.Forms.TextBox textBox1;

        private System.Windows.Forms.Button button1;

        public Form1()

        {

            InitializeComponent();

        }

        private void InitializeComponent()

        {

            this.textBox1 = new System.Windows.Forms.TextBox();

            this.button1 = new System.Windows.Forms.Button();

            this.SuspendLayout();

            // 

            // textBox1

            // 

            this.textBox1.Location = new System.Drawing.Point(111, 44);

            this.textBox1.Name = "textBox1";

            this.textBox1.Size = new System.Drawing.Size(194, 21);

            this.textBox1.TabIndex = 0;

            // 

            // button1

            // 

            this.button1.Location = new System.Drawing.Point(325, 34);

            this.button1.Name = "button1";

            this.button1.Size = new System.Drawing.Size(87, 30);

            this.button1.TabIndex = 1;

            this.button1.Text = "button1";

            this.button1.UseVisualStyleBackColor = true;

            this.button1.Click += new System.EventHandler(this.button1_Click);

            // 

            // Form1

            // 

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.ClientSize = new System.Drawing.Size(471, 353);

            this.Controls.Add(this.button1);

            this.Controls.Add(this.textBox1);

            this.Name = "Form1";

            this.Text = "Form1";

            this.ResumeLayout(false);

            this.PerformLayout();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            Thread t = new Thread(ThreadStart);

            t.Start();

        }

        private void ThreadStart()

        {

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

            {

                SetTextBoxText(i.ToString());

            }

        }

        private delegate void SetTextBoxTextDelegate(string str);

        private void SetTextBoxText(string str)

        {

            if (this.textBox1.InvokeRequired)

            {

                this.Invoke(new SetTextBoxTextDelegate(SetTextBoxText), str);

            }

            else

            {

                this.textBox1.Text = str;

            }

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息