Ok, powiedzmy, że mam dwa okna. W pierwszym mam metodę
public void Test()
{
Label.Content += " works";
}
W drugim nazywam tę metodę:
MainWindow mw = new MainWindow();
mw.Test();
Ale nic się nie dzieje. Co ja robię źle? Dzięki.
Odpowiedzi:
10 dla odpowiedzi № 1Możesz przypisać właściciela do okna, które zostało utworzone w MainWindow.
window.Owner = this; //This is added to the code that use to create your Window
Wtedy powinieneś mieć do niego dostęp w ten sposób.
((MainWindow)this.Owner).Test();
Główne okno
public partial class MainWindow : Window
{
Window1 window = new Window1();
public MainWindow()
{
InitializeComponent();
window.Show();
}
public void Test()
{
label1.Content += " works";
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
window.Owner = this;
}
}
Drugie okno
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
((MainWindow)this.Owner).Test();
}
}
0 dla odpowiedzi nr 2
Dlaczego tak się starasz?
public string Test()
{
return "works";
}
MainWindow mw = new MainWindow();
// Your second form label.
lblsecondwindow.Text = mw.Test();
0 dla odpowiedzi № 3
Tworzysz inny obiekt MainWindow
jak poniżej:
MainWindow mw = new MainWindow();
zamiast tworzyć nowe MainWindow
obiekt używa istniejącego (zakładam, że już go utworzyłeś) MainWindow
obiekt przed).
Spróbuj tego:
oldmaindwindow.Test();//here oldmainwindow is an old object of MainWindow
jeśli potrafisz pokazać pełny kod, to nas on.