委托 在其他类中修改form中的控件属性

通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 

Form1.cs

 using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            TestDelegate td = new TestDelegate();
            td.cb = SafeSetText;
            Thread th = new Thread(new ThreadStart(td.Test));
            th.Start();
        }

        public  void SafeSetText(string text)
        {
            if (this.InvokeRequired)
            {
                _SafeSetTextCall call = delegate(string s)
                {
                    this.label1.Text = s;
                };

                this.Invoke(call, text);
            }
            else
                this.label1.Text = text;
        }

        public delegate void _SafeSetTextCall(string text); 
    }
}

 TestDelegate.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace WindowsFormsApplication2
{
    public delegate void CallBack(string msg);

    public class TestDelegate
    {
        public CallBack cb;
        public TestDelegate()
        {

        }
        public void Test()
        {
            for (int i = 0; i < 100; i++) { 
                cb(i.ToString());
                Console.WriteLine(i.ToString());
                Thread.Sleep(1000);
            }
        }
    }

} 

原文地址:https://www.cnblogs.com/beijing2020/p/4036391.html