我仍处于 c# 的学习阶段,所以如果您认为这是一个愚蠢的问题,请不要开枪 ;-)
在项目中,我有主窗口和一个名为“window1”的新窗口
在主体上,我制作了一个按钮,它将像这样转到 window1:
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 W1 = new Window1();
W1.Show();
this.Close();
}
现在,这按预期工作,创建 window1 的新实例并在关闭主窗口时显示它。
但这里有一个问题:在 window1 中,某些东西可能会发生变化,例如用户单击的按钮,然后在显示新按钮时隐藏该按钮。
我还在 window1 上制作了一个后退按钮,它使用与上面相同的代码返回到 mainWindow(所以现在新的 window1 但新的 mainwindow)
但是此时,当我再次单击主按钮转到 window1 时,window1 返回到默认状态。对我来说似乎合乎逻辑,因为它在使用按钮时创建了一个新实例。
但是如果我想再次打开 window1 的第一个实例,那个已经被用户更改过的实例,我应该怎么做呢?
首先,我想到将 Window1 W1 = new Window1();
放在按钮方法之外,但这也行不通,因为那个“后退”按钮。
我希望我已经充分解释了我想做的事情。
有什么想法吗?
=====================
编辑 1:
使用“chrfin”中的代码示例 某些部分会产生错误,例如“visible = true”部分 也许这是因为我使用 express 2010 还是因为我使用 WPF 而不是表单?
主要是:
Window1 W1 = null; // Initialise Field.
private void CalcTabel_Click(object sender, RoutedEventArgs e)
{
if (W1 == null)
{
W1 = new Window1();
W1.MainWindow = this; //ERROR
W1.Show();
}
else
W1.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
在窗口1
public MainWindow w1 { get; set; }
private void Quit_Click(object sender, RoutedEventArgs e)
{
w1.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
现在我在主要部分遇到的错误是: “WpfApplication1.Window1”不包含“MainWindow”的定义,可以找到“WpfApplication1.Window1”类型的第一个参数(是否缺少 using 指令或程序集引用?)
只是删除该错误行,将导致获取、设置部分无法获取任何内容。
有什么想法吗?
=====================
编辑 1:
再次感谢“chrfin” 现在开始工作了:)
主要是:
Window1 W1 = null; // Initialise Field.
private void CalcTabel_Click(object sender, RoutedEventArgs e)
{
if (W1 == null)
{
W1 = new Window1();
W1.Hoofdmenu = this;
W1.Show();
}
else
W1.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
在窗口 1 中:
public MainWindow Hoofdmenu { get; set; }
private void Quit_Click(object sender, RoutedEventArgs e)
{
Hoofdmenu.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
- 解决了-
最佳答案
你可以这样做:
Window1 w1 = null;
private void Button_Click(object sender, RoutedEventArgs e)
{
if(w1 == null)
{
w1 = new Window1();
w1.MainWindow = this; //create this property - see below
w1.Show();
}
else
w1.Visible = true;
this.Visible = false;
}
在 Window1 内:
public MainWindow MainWindow { get; set; }
private void ButtonBack_Click(object sender, RoutedEventArgs e)
{
this.Visible = false;
MainWindow.Visible = true;
}
关于c# - 打开一个新窗口,但并不总是它的一个新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8832230/