【问题标题】:Remove WPF element while program is running with C#使用 C# 运行程序时删除 WPF 元素
【发布时间】:2023-04-04 17:27:01
【问题描述】:

我想在用户看到或使用该程序之前从他们那里获得一些信息。目前我只有一个黑色矩形隐藏我的 GUI,前面有一个文本框。当信息输入到框中时,我将它和矩形的可见性设置为折叠。

我只在程序开始时才需要它们,并且我假设它们仍然存在并在折叠时占用内存。一旦我对它们没有用处,有没有办法完全删除它们?

【问题讨论】:

    标签: c# .net wpf user-interface


    【解决方案1】:

    为什么不弹出一个模态窗口,然后当它关闭时,它会自动从视觉/逻辑树中删除

    例如

    Window win = new MyPopupWindow();
    win.ShowDialog();
    

    【讨论】:

      【解决方案2】:

      使用某种标准 UI 元素,如上面建议的模态窗口或 silverlight 中的 ChildWindow 会更好。

      但是,折叠的元素不会给您带来任何内存问题,它们会从渲染管道中取出。 Opacity = 0 会一直存在。 如果你真的想删除它,父 Panel(例如 Grid)有一个带有 Remove() 方法的 Children 集合。

      【讨论】:

        【解决方案3】:

        您可以使用用于启动画面的技术来做到这一点,如下例所示。

        两个区别:

        1. 使用 ShowDialog() 代替 Show() 使窗口模块化(始终在顶部并冻结执行)。

        2. 在 main.thread 上运行,而不是在单独的线程上运行。

        例子:

        Hide WPF Window Until Fully Loaded

        但是,您可能需要考虑重新考虑您的方法,因为它似乎对用户不友好。

        【讨论】:

          猜你喜欢
          • 2021-11-26
          • 1970-01-01
          • 1970-01-01
          • 2015-08-31
          • 2019-02-18
          • 1970-01-01
          • 1970-01-01
          • 2020-11-03
          • 2021-12-04
          相关资源
          最近更新 更多