2016-08-18 87 views
1

我有窗口1,具有發送如何調用函數,在窗口1從窗口2

public void proba() 
     {     
       MessageBox.Show(this.comboBoxTipUnosa.Text); 

     } 

和一個按鈕的功能單擊它具有

Window2 win2= new Window2(); 
win2.textBoxOne.Text = selectedString; 
win2.ShowDialog(); 

如果從窗口2,在按鈕點擊我的代碼去

Window1 win1 = new Window1(); 
win1.proba(); 

得到了一個空白messagebox.But如果一個MessageBox與MessageBox.show(「一些文本」)申報;有用。

這只是一個測試,我希望通過。我的最終想法是在Window1中有一個用於插入SQL查詢的代碼,使用Window1中的文本框,我將需要調用該方法在Window2上單擊一個按鈕後。

+0

將公共邏輯重構爲每個表單可以使用的單獨類。 –

+1

[如何使C#類中的方法調用另一個可能的重複?](http://stackoverflow.com/questions/16226444/how-to-make-method-call-another-one-in-classes-c) –

回答

3

你正在創建一個新實例的Window1

Window1 win1 = new Window1(); 

這意味着this.comboBoxTipUnosa.Text在該實例空。

而是將現有的實例傳遞給Window2。首先,期望它在構造函數中Window2

private Window1 window1Instance; 

public Window2(Window1 window1) 
{ 
    this.window1Instance = window1; 
} 

然後通過參考創建Window2時:

然後在Window2可以參考現有的實例:

this.window1Instance.proba(); 

備註:這是一個「WinForms」做事的方式。儘管我不會聲稱自己是WPF/MVVM專家,但您絕對應該將重點放在學習WPF中使用的模式和實踐上。處理它像WinForms 可以「工作」,但它很笨重,並沒有真正使用可用的工具。

+0

謝謝,這是我需要的! – nscott23

相關問題