使用C#将变量传递给另一个类

时间:2014-04-12 23:35:55

标签: c# wpf

现在我正在为我制作的几个不同的控制器制作GUI。每个控制器都在自己的类中,并且是WPF。为了使用控制器,我需要一个用户键入GUI包含的文本框的IP地址。当我创建GUI类的对象并尝试使用变量时,无论我将变量初始化为什么,而不是更新的变量。

该变量在我的GUI类中更新。不在我的其他课程中。

我是C#的新手,帮帮忙!

 public partial class MainWindow : Window {

    public String nao_ip = "";

    private void IPAddress_TextChanged(object sender, TextChangedEventArgs e)
    {
        nao_ip = IPAddress.Text;
    }

 }

  public partial class Test : Window
{
    MainWindow main = new MainWindow();

    public Test()
    {
        InitializeComponent();
    }
    public void Window_Loaded(object sender, RoutedEventArgs e)
    {
        String nao_ip = main.nao_ip;
        MessageBox.Show(nao_ip);
    }

}

它们位于两个单独的.xaml文件中。

4 个答案:

答案 0 :(得分:0)

public partial class Test : Window
{
    MainWindow main = new MainWindow();

    public Test()
    {
        InitializeComponent();
    }
    public void Window_Loaded(object sender, RoutedEventArgs e)
    {
        main.ShowDialog();

        String nao_ip = main.nao_ip;
        MessageBox.Show(nao_ip);
    }
}

答案 1 :(得分:0)

我通过Data Bindings传递了主窗口的实例。

我发现此前提出的问题非常有用

Data Binding between two TexBoxes in different windows

答案 2 :(得分:0)

//The following allows the Test window to reference an existing instance of    
//Main window. All you need to do is instantiate Test window 
//using the example code in my notes below.

public partial class Test : Window
{
    MainWindow main = null;

    public Test(MainWindow existingMainWindow)
    {
        main = existingMainWindow;
        InitializeComponent();
    }
    public void Window_Loaded(object sender, RoutedEventArgs e)
    {
        //main.ShowDialog(); 
        String nao_ip = main.nao_ip;
        MessageBox.Show(nao_ip);
    }
}

答案 3 :(得分:-1)

我会说:“使用构造函数”,但在发布一些代码之前它是不准确的。

编辑:您不能将main设置为新实例(通过MainWindow main = new MainWindow();),而是相同。

例如,您可以在使用this打开测试窗口时在参数中传递此实例,并仅使用该值设置主变量(表示主窗口的实例)。