从一个窗口访问另一个窗口中的变量值

本文关键字:窗口 访问 另一个 变量值 一个 | 更新日期: 2023-09-27 18:27:07

我对C#还比较陌生,我有一个关于如何从一个窗口访问另一个窗口中的变量的问题。我想做这样的事情:

public partial class MainWindow : Window
{
int foo=5;
....
}

在窗口2:

public partial class Window2: Window
{
int bar=foo;
}

我该怎么做?提前感谢。。。

从一个窗口访问另一个窗口中的变量值

public class WindowBase : Window
{
    protected static int foo = 5;
    public int Foo
    {
        get
        {
            return foo;
        }
        set
        {
            foo = value;
        }
    }
}
public partial class Window1 : WindowBase
{
    public Window1()
    {
        int bar = base.Foo;
    }
}
public partial class Window2 : WindowBase
{
    public Window2()
    {
        int bar = base.Foo;
    }
}

在一个有固定变量的程序中,上面的答案会很好。但是,如果您想访问在运行时动态更改的变量,最好创建一个单独的类(单独的文件),作为两个窗口类之间的接口。

为了这个例子,我们假设这个"独立"类存储在funkyFolder中。我们必须初始化这个类中的变量。

/funkyFolder/DataInterface.cs:

namespace fooDemo.funkyFolder
{
    public static class DataInterface
    {
        public static int fooVal = 0;
    }
}

现在,在第一个窗口中,您可以动态地更改变量数据Ps:记得添加using fooDemo.funkyFolder

using fooDemo.funkyFolder;
namespace fooDemo
{
    public partial class MainWindow : Window
    {
        private void btnHello_Click(object sender, RoutedEventArgs e)
        {
            DataInterface.fooVal = 10;
        }
    }
}

然后,在第二个窗口中,您可以毫无问题地访问该变量。

using fooDemo.funkyFolder;
namespace fooDemo
{
    public partial class SecondWindow : Window
    {
        public CartPage()
        {
             System.Diagnostics.Debug.WriteLine(DataInterface.fooVal);
        }
    }
}

您可以将这些变量放入一个静态类:

static class MyVariables
{
    public static int foo;
}

在主窗口中,您可以设置此变量的值:

MyVariables.foo = 5;

在Window2中,您可以请求值:

int bar = MyVariables.foo;

首先,您必须使您的变量public:

public int foo = 5;

为了访问,创建MainWindow:的实例

MainWindow mw = new MainWindow();
bar = mw.foo;

您可以通过多种方式来实现。不过这取决于你的用法。

您可以从Window2公开属性(假设此窗体由MainWindow调用)。

public partial class Window2: Window
{
    public string Name {get; set;}
}

然后在MainWindow中可以设置此属性。

或者您可以创建单个作为数据共享不过,我不建议这样做

您也可以参考此链接,但假设您刚刚启动C#,我认为它可能有点复杂。