2013-11-22 61 views
1

我有2個表單Form1Form2在c中將一個動態字符串從一個表單傳遞到另一個表單#

在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

如何在form2中動態顯示標籤2上form1中label1的相同內容。

請幫助一個例子。

+0

你怎麼稱呼第二形成?一般來說,我會重載表單2的構造函數,並傳遞標籤1的值作爲參數。 –

+0

這兩種形式/開放/更新在同一時間?或者這是一次性的事情,當表格2打開時,爲它傳遞一個值? –

+0

兩種表格都是同時打開的。 – Jake

回答

0

你可以有一個Action你打電話的時候你更新labelForm1

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

+0

大衛,你可以請完整解釋一下。我是c#的初學者。 – Jake

+0

@Jake我會在下班回家時加一個 –

相關問題