2016-02-27 110 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;