【问题标题】:Working with multiple wpf windows using c#使用 c# 处理多个 wpf 窗口
【发布时间】:2012-03-21 10:32:25
【问题描述】:

我很抱歉发布这个问题,因为这个问题有很多相关主题,但不幸的是他们都无法帮助我! 所以我有一个包含两个 wpf 窗口(MainWindow() 和 Window1())的应用程序,我真正想要实现的是从 MainWindow() 控制 window1 属性。 例如,每次我从 MainWindow 中单击 Button1 时,我都想从 window1 中清除一个列表框项目!我还想完全访问从 window1 退出的 MainWindow 中的方法、字段和属性。

【问题讨论】:

    标签: c# wpf windows


    【解决方案1】:

    您可以做的是添加允许从MainWindow 访问您的Window1 类的公共属性/方法。

    例如,如果要从MainWindow 中清除Window1 中的列表,请将以下方法添加到Window1

    public void ClearList()
    {
        // Clear your list here
    }
    

    当然,您需要您的MainWindow 来了解Window1,但顾名思义,我假设MainWindow 是主窗口,因此它会创建Window1 实例。

    所以你应该在MainWindow 中引用Window1。在MainWindow,只需调用:

    this.myWindow1.ClearList();
    

    【讨论】:

    • 这样我就不必像 windwo1 wind = new window1() 那样在 MainWindow 中创建 Window1 的引用?
    • 你必须这样做。如果不这样做,您将如何显示窗口?首先创建实例,然后调用实例的方法。
    • 谢谢,我会在需要时这样做,但 ClearList() 方法不适用于我。当我在 window1 中实现 ClearList() 并尝试在像 Window1.ClearList() 这样的主窗口;它失败了!
    • @Destro009 是的,因为您将方法调用到类本身,而不是类的实例。
    • 但是我用这个没问题!!就像,this.window1.ClearList() 我希望它能正常工作!
    【解决方案2】:

    问题出在哪里?我没有看到任何问题。

    也许您想从在 MainWindow 中保存 Window1 的 ref 开始。

    Window1 window1 = new Window1();
    window1.show();
    

    从那里做你需要做的事情:

    window1.foo();
    window1.bar();
    window1.foobar = "Title";
    

    编辑:一些澄清,因为 OP 似乎是初学者:

    public class MainWindow
    {
    
        private Window1 window1;
    
        public void CreateWindow()
        {
             window1 = new Window1();
             window1.show();
        }
    
        private void DoStuffWithWindow1()
        {
             window1.foo();
             window1.bar();
             window1.foobar = "Title";
        }
    }
    

    【讨论】:

    • 是的,我已经这样做了,并得到了 StackOverFlowException !! *****.exe 中发生“System.StackOverflowException”类型的未处理异常
    • 哼,你一定在某个地方有一些递归调用。请张贴代码。你在使用任何事件吗?
    • 不,例外是关于 Window1 window1 = new Window1(); ps:我将window1声明为全局变量!!
    • 全球?你的意思是在课堂上?你什么时候初始化 window1 ?在 mainWindow 的 ctor 中?
    • 在公共部分类中是的,但我不明白为什么每次运行应用程序时都会运行一个新的 window1 实例!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    相关资源
    最近更新 更多