2016-02-27 109 views
2

我有兩個windows(MainWindow,SecondWindow),一個class (ExampleClass)訪問一個類和方法與messagebox它應該包含Name + SecondName變量文本。如何從兩個窗口(C#WPF)

所以我想添加一些文本從MainWindowExampleClass Name字符串,然後從打開SecondWindowExampleClass SecondName字符串一些文字。從那以後,我想點擊MainWindow按鈕,這樣就可以給我messagebox有兩個字符串

Name + SecondName 

主窗口:

ExampleClass SomeClass = new ExampleClass(); 
    SomeClass.Name = MainWindowTxtBox.Text; 

第二個窗口:

ExampleClass SomeClass = new ExampleClass(); 
SomeClass.SecondName = SecondWindowTxtBox.Text; 

這將創造新的istance只有一個窗口的類,是否有可能創造兩個窗口?

回答

1

您可以使用static這樣的:

class ExampleClass 
{ 
    public static string Name { get; set; } 
    public static string SecondName { get; set; } 

    public static void print() 
    { 
     MessageBox.Show(Name + SecondName); 
    } 
} 

然後在MainWindow

ExampleClass.Name = MainWindowTxtBox.Text; 

而在SecondWindow

ExampleClass.SecondName = SecondWindowTxtBox.Text; 

最後:

ExampleClass.print(); 
0

然後,您應該在主應用程序而不是窗口中創建您的類的實例。

1

是的,這是可能的。但是一個班級需要知道其他班級。嘗試這樣:

Class1 
{ 
    public ExampleInstance Instance { get; set; } 
    //Create your Class2 object here with Class2 SecondClassObject = new Class2(this) 
} 

Class2 
{ 
    private Class1 MyCreator; 
    public Class2(Class1 Creator) 
    { 
    this.MyCreator = Creator; 
    } 
    //Now you can use the object with: MyCreator.Instance 
} 

希望這會有所幫助。

+0

也謝謝,試用過這種方法並且運行得很好...... :) –

0

創建一個單身(https://msdn.microsoft.com/en-us/library/ff650316.aspx):

public class ExampleClass 
{ 
    public string Name { get; set; } 
    public string SecondName { get; set; } 

    protected ExampleClass() { 
    } 

    static ExampleClass _instance; 

    public static ExampleClass Instance { 
     get { 
      return _instance ?? (_instance = new ExampleClass()); 
     } 
    } 
} 

,你的代碼看起來就像這樣:

主窗口

ExampleClass.Instance.Name = MainWindowTxtBox.Text; 

第二個窗口

ExampleClass.Instance.SecondName = SecondWindowTxtBox.Text;