如何从两个窗口访问一个类 (C# WPF)
本文关键字:一个 WPF 访问 两个 窗口 | 更新日期: 2023-09-27 18:36:28
我有两个windows(MainWindow,SecondWindow)
,一个class (ExampleClass)
ExampleClass
两个strings (Name,SecondName)
和方法,messagebox
应该包含来自Name + SecondName
变量的文本。
所以我想从MainWindow
添加一些文本到字符串ExampleClass Name
然后从打开的SecondWindow
添加一些文本到字符串ExampleClass SecondName
。之后,我想单击MainWindow
按钮,这应该让我messagebox
两个字符串
Name + SecondName
主窗口 :
ExampleClass SomeClass = new ExampleClass();
SomeClass.Name = MainWindowTxtBox.Text;
第二个窗口 :
ExampleClass SomeClass = new ExampleClass();
SomeClass.SecondName = SecondWindowTxtBox.Text;
这将只为一个窗口创建新的类,是否可以为两个窗口创建 istance?
你可以
像这样使用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();
是的,这是可能的。但是一个类需要知道另一个类。像这样尝试:
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
}
希望这有帮助。
然后,
您应该在主应用程序而不是窗口中创建类的实例。
创建一个单例 (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;