万捷博客

万捷博客
一个知识汇聚的地方
首页 » csharp » C#线程内修改窗口组件内容

C#线程内修改窗口组件内容

44.gif

工具:
  1. 实例采用VS2017编写
操作:

在 public Form1() 函数中设置检测跨线程调用为假:

      public Form1()
        {
            InitializeComponent();

            //设置  检查非法跨线程调用 为 false
            CheckForIllegalCrossThreadCalls = false;
        }


声明 线程调用窗口组件的委托

private delegate void MyDelegateUI();


在线程函数中实现委托修改

            //定义委托
            MyDelegateUI s = delegate
            {
                label1.Text = "新标题";
            };

            //执行委托
            label1.Invoke(s);

 

完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace wt
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //设置  检查非法跨线程调用 为 false
            CheckForIllegalCrossThreadCalls = false;
        }

        //声明线程调用窗口组件的委托
        private delegate void MyDelegateUI();

        private void button1_Click(object sender, EventArgs e)
        {
            Thread xc = new Thread(xg);
            xc.Start();
        }
        private void xg(object data)
        {
            //定义委托
            MyDelegateUI s = delegate
            {
                label1.Text = textBox1.Text;
            };

            //执行委托
            label1.Invoke(s);
        }
    }
}

 

文章如无特别注明均为原创! 作者: admin, 转载或复制请以 超链接形式 并注明出处 万捷博客
原文地址《 C#线程内修改窗口组件内容》发布于2018-11-9

打赏作者

评论

游客

看不清楚?点图切换
切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册