2015-08-29 55 views
1

我使用2個窗體開發窗口應用程序:Form1Form2。這兩個表單已經顯示在屏幕上。從另一個表格更新文本框

我在Form2調用funtion一個按鈕Form1,如:在Form1

private void btnGetStation_Click(object sender, EventArgs e) 
{ 
    Program.form.showConnectionStatus(); 
} 

showConnectionStatus函數將調用一個函數在Form2在文本框更新信息。 configElement是一個字符串數組,與4個元素:

public void showConnectionStatus() 
{ 
    Program.form2.updateSMOStatus(configElement[0], configElement[1], configElement[2] + "," + configElement[3]); 
} 

updateSMOStatusForm2Form2更新Textboxs值:

public void updateSMOStatus(string line, string group, string stationType) 
{ 
     txtLineName.Text = line; 
     txtGroupName.Text = group; 
     txtStationType.Text = stationType; 
} 

我已經調試,發現所有textbox值被改變,但它們不被顯示。我的問題是爲什麼價值不顯示在Form2

和我Program類:

static class Program 
{ 

    public static Terminal form; 
    public static Form2 form2; 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      form = new Terminal(); 
      form2 = new Form2(); 
      Application.Run(form); 
     } 
} 
+0

BTW!不要使用'group'作爲變量,因爲它是C#關鍵字。 –

+0

@ X-TECH我使用'委託'找到了解決方案,bro ^^ –

+0

@MrNeo:答案應該作爲答案提交。問題不是答案的地方。 –

回答

0

通過使用delegate我解決這個問題:

Form1 add:

public delegate void UpdateSMOStatus(string line, string group, string stationType); 
public UpdateSMOStatus updateSMOStatus; 

showConnectionStatus功能更改爲:

public void showConnectionStatus() 
{ 
    updateSMOStatus(configElement[0], configElement[1], configElement[2] + "," + configElement[3]); 
} 

Form2功能看起來像:

private void btnGetStation_Click(object sender, EventArgs e) 
{ 
    Program.form.updateSMOStatus = new Terminal.UpdateSMOStatus(updateSMOStatus); 
    Program.form.showConnectionStatus(); 

} 

public void updateSMOStatus(string line, string group, string stationType) 
{ 
     txtLineName.Text = line; 
     txtGroupName.Text = group; 
     txtStationType.Text = stationType; 
} 
0

如果您想更新此窗體2的值,你需要兩個變化。 第一個是關閉當前窗口2

private void btnGetStation_Click(object sender, EventArgs e) 
{ 
    Program.form.showConnectionStatus(); 
    this.Close(); 

}` 

現在在Form1使showConnectionStatus一些變化()方法

public void showConnectionStatus() 
     { 


      Program.form2.updateSMOStatus(configElement[0], configElement[1], configElement[2] + "," + configElement[3]); 
      Program.form2.Show(); 
     } 

我認爲它會正常工作