【问题标题】:Passing a dynamic String from one form to another in c#在c#中将动态字符串从一种形式传递到另一种形式
【发布时间】:2013-11-22 15:41:57
【问题描述】:

我有 2 个表单 Form1Form2

在 Form1 中,我有一个 backgroundWorker

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        backgroundWorker1.RunWorkerAsync();
        Form2 frm2 = new Form2();
        frm2.Show();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        int k = 0;bool b=true;
        while (b==true)
        {
            Thread.Sleep(100);
            k++;
            backgroundWorker1.ReportProgress(0, "data");
            if (k >= 100)
                b = false;
        }
    }

    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        string str = "";
        str+=e.UserState.ToString();
        label1.Text += str;
    }
}

Form2 我有一个标签label2

如何在form1中的label2上动态显示form1中label1的相同内容。

请帮忙举个例子。

【问题讨论】:

  • 第二种形式怎么称呼?一般来说,我会重载表单2的构造函数,并将标签1的值作为参数传递。
  • 两个表单/打开/更新是否同时?或者这是一次性的事情,当表单 2 打开时,向它传递一个值?
  • 两个表单同时打开。

标签: c# winforms backgroundworker


【解决方案1】:

您可以在Form1 上更新label 时调用Action

public Action<string> UpdateFormAction {get; set;}   

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    string str = "";
    str+=e.UserState.ToString();
    label1.Text += str;
    UpdateForm2(label1.Text);
}

private void UpdateForm2(string text)
{
   Action<string> handler = UpdateFormAction;
   if (handler != null)
       handler(text);
}

然后根据您实例化表单的位置,您可以连接Action

【讨论】:

  • 大卫,你能不能详细解释一下。我是 C# 的初学者。
猜你喜欢
  • 1970-01-01
  • 2015-06-06
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多