Can't call a method from another window in C# WPF

一世执手 提交于 2019-12-07 03:43:31

问题


Ok, let's say I have two windows. In the first one I have a method

public void Test()
{
    Label.Content += " works";
}

And in the second one I call this method:

MainWindow mw = new MainWindow();
mw.Test();

But nothing happens. What am I doing wrong? Thanks.


回答1:


You can assign the Owner to the window that was created in your MainWindow.

window.Owner = this; //This is added to the code that use to create your Window

Then you should be able to access it something like this.

((MainWindow)this.Owner).Test();

MainWindow

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;
    }


}

Second Window

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();


    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ((MainWindow)this.Owner).Test();
    }
}



回答2:


Why do you try this way.

public string Test()
{

   return  "works";
}

 MainWindow mw = new MainWindow();


 // Your second form label.
 lblsecondwindow.Text = mw.Test();



回答3:


You are creating another object of MainWindow as below:

MainWindow mw = new MainWindow();

instead of creating new MainWindow object use the existing one(i'm assuming that you had already created MainWindow object before).

Try This:

oldmaindwindow.Test();//here oldmainwindow is an old object of MainWindow

if you can show the fullcode it heps us.



来源:https://stackoverflow.com/questions/20014728/cant-call-a-method-from-another-window-in-c-sharp-wpf

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!