C# 如何更新窗口而不是在wpf中创建新窗口
我有一个带有主窗口和Window1的程序。我在主窗口中有一些按钮和一些标签,当我按下其中一个按钮时,它会打开窗口1(所有这些按钮都会打开同一个窗口1,但根据我按下的按钮,内容不同)。然后在Window1中,我有一个文本框和一个按钮,当我按下按钮时,它必须填充主窗口中的一个标签,它确实填充了,问题是当尝试填充另一个标签时,它会删除我之前填充的标签 主窗口:C# 如何更新窗口而不是在wpf中创建新窗口,c#,wpf,C#,Wpf,我有一个带有主窗口和Window1的程序。我在主窗口中有一些按钮和一些标签,当我按下其中一个按钮时,它会打开窗口1(所有这些按钮都会打开同一个窗口1,但根据我按下的按钮,内容不同)。然后在Window1中,我有一个文本框和一个按钮,当我按下按钮时,它必须填充主窗口中的一个标签,它确实填充了,问题是当尝试填充另一个标签时,它会删除我之前填充的标签 主窗口: public partial class MainWindow : Window { public MainWindow()
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.Show();
this.Close();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.ShowDialog();
YourTexbox.Text = window1.YourText;
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.Owner = this; //Note I am adding the Owner here
window1.Show();
Hide(); // I also am hiding the MainWindow instead of closing it.
}
}
窗口1:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
MainWindow main;
private void Button_Click(object sender, RoutedEventArgs e)
{
main = new MainWindow();
if (Convert.ToString(label.Content) == "You pressed button 1")
{
main.label1.Content = textBox.Text;
}
else
{
main.label2.Content = textBox.Text;
}
main.Show();
this.Close();
}
}
public partial class Window1 : Window
{
public string YourText {get; set;}
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Convert.ToString(label.Content) == "You pressed button 1")
{
YourText = textBox.Text;
}
else
{
YourText = textBox.Text;
}
this.Close();
}
}
public partial class Window1 : Window
{
MainWindow main;
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
main = (MainWindow)Owner; /Note I am using the owner not creating a new MainWindow
if (Convert.ToString(label.Content) == "You pressed button 1")
{
main.label1.Content = textBox.Text;
}
else
{
main.label2.Content = textBox.Text;
}
main.Show();
this.Close();
}
}
我的整个项目有点不同,但更大。对不起,如果您不明白我的意思,我不是以英语为母语的人。因为您正在创建主窗口。每次打开新窗口时,都会在此类中创建MainWindow的新实例,这就是为什么会清除旧文本框的原因 试着这样做: 主窗口:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.Show();
this.Close();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.ShowDialog();
YourTexbox.Text = window1.YourText;
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.Owner = this; //Note I am adding the Owner here
window1.Show();
Hide(); // I also am hiding the MainWindow instead of closing it.
}
}
窗口1:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
MainWindow main;
private void Button_Click(object sender, RoutedEventArgs e)
{
main = new MainWindow();
if (Convert.ToString(label.Content) == "You pressed button 1")
{
main.label1.Content = textBox.Text;
}
else
{
main.label2.Content = textBox.Text;
}
main.Show();
this.Close();
}
}
public partial class Window1 : Window
{
public string YourText {get; set;}
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Convert.ToString(label.Content) == "You pressed button 1")
{
YourText = textBox.Text;
}
else
{
YourText = textBox.Text;
}
this.Close();
}
}
public partial class Window1 : Window
{
MainWindow main;
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
main = (MainWindow)Owner; /Note I am using the owner not creating a new MainWindow
if (Convert.ToString(label.Content) == "You pressed button 1")
{
main.label1.Content = textBox.Text;
}
else
{
main.label2.Content = textBox.Text;
}
main.Show();
this.Close();
}
}
如前所述,您正在创建一个新的主窗口,它将否定您以前的所有更改,请尝试将主窗口指定为Window1的所有者,这样您就可以引用回原始窗口 类似这样的内容:
主窗口:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.Show();
this.Close();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.ShowDialog();
YourTexbox.Text = window1.YourText;
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 window1 = new Window1();
if (sender.Equals(boton1))
{
window1.info.Content = "You pressed button 1";
}
else
{
window1.info.Content = "You pressed button 2";
}
window1.Owner = this; //Note I am adding the Owner here
window1.Show();
Hide(); // I also am hiding the MainWindow instead of closing it.
}
}
窗口1:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
MainWindow main;
private void Button_Click(object sender, RoutedEventArgs e)
{
main = new MainWindow();
if (Convert.ToString(label.Content) == "You pressed button 1")
{
main.label1.Content = textBox.Text;
}
else
{
main.label2.Content = textBox.Text;
}
main.Show();
this.Close();
}
}
public partial class Window1 : Window
{
public string YourText {get; set;}
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Convert.ToString(label.Content) == "You pressed button 1")
{
YourText = textBox.Text;
}
else
{
YourText = textBox.Text;
}
this.Close();
}
}
public partial class Window1 : Window
{
MainWindow main;
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
main = (MainWindow)Owner; /Note I am using the owner not creating a new MainWindow
if (Convert.ToString(label.Content) == "You pressed button 1")
{
main.label1.Content = textBox.Text;
}
else
{
main.label2.Content = textBox.Text;
}
main.Show();
this.Close();
}
}
您需要通知属性已更改。@Ilankshet抱歉,我应该如何将其添加到我的代码中?请查看链接,它是答案中的完整解释。您需要在标签上进行绑定,而不是直接更改其内容