我有3个窗口,我可以在它们之间切换。我遇到的问题是Windows在隐藏时不保存数据。我觉得他们正处在某个地方,但我不知道怎么做。我在两个窗口上有一个文本框来测试它。当只有两个窗口时它工作正常,但添加第三个窗口就产生了这个问题。这是我的主窗口。
public partial class MainWindow : Window
{
private AutoImport auto;
private DTLegacy dleg;
public MainWindow()
{
InitializeComponent();
}
public MainWindow(AutoImport parent)
{
InitializeComponent();
auto = parent;
}
public MainWindow(DTLegacy parent)
{
InitializeComponent();
dleg = parent;
}
private void btnAutoImport_Click(object sender, RoutedEventArgs e)
{
this.Hide();
if (auto == null) { auto = new AutoImport(); }
auto.Show();
}
private void btnDTLegacy_Click(object sender, RoutedEventArgs e)
{
this.Hide();
if (dleg == null) { dleg = new DTLegacy(); }
dleg.Show();
}
}
窗口1
public AutoImport()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Hide();
MainWindow main = new MainWindow(this);
main.Show();
}
Window 2
public DTLegacy()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Hide();
MainWindow main = new MainWindow(this);
main.Show();
}
我认为答案可能是创建某种窗口类,但我不确定这会是什么样的。
答案 0 :(得分:1)
为什么每次都要创建一个新的MainWindow
实例?您当前正在隐藏它,因此请再次显示它,而不是创建一个新的。
假设它是应用程序的主窗口,AutoImport
/ DTLegacy
是“子”窗口,一种解决方案是将MainWindow
实例作为“子”窗口的参数传递,所以你可以轻松拨打.Show()
:
private MainWindow parent;
public AutoImport(MainWindow parent)
{
InitializeComponent();
this.parent = parent;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Hide();
this.parent.Show();
}