【问题标题】:WinForms UI design: displaying controls for only currently viewed hierarchy levelWinForms UI 设计:仅显示当前查看的层次结构级别的控件
【发布时间】:2013-03-25 14:52:46
【问题描述】:

我正在尝试创建一个 WinForms 应用程序,它允许用户显示和编辑存储在 MSSQL 数据库中的数据。被更改的数据是分层的,并且在层次结构的单个级别内,可以更改的属性是相同的;换句话说,层次结构中单个级别的控件是相同的,但它们可能与其他级别不同。

我正在尝试以这样一种方式创建应用程序,即只有一个带有控件的表单,这些控件根据用户查看的项目的层次级别进行更新。我意识到这可以通过将所有级别的所有控件放在一个表单上并更新它们的“可见”属性来实现,但是由于混乱,这种方法使表单的设计变得困难......你们中的任何一个人找到了一个更优雅/更少的丑陋的解决方案?

【问题讨论】:

  • Have any of you found a more elegant/less ugly solution? - 您是否尝试过当前的 Windows UI 技术?它们基于 XAML、速度更快、可扩展性更高且简单美观。
  • @HighCore 我假设您指的是 WPF?我对 C# 很陌生(老实说,一般来说是编程),还没有冒险……
  • 是的,如果你还不知道winforms,不要浪费你的时间。诚然,WPF 具有更陡峭的学习曲线,但它更强大且可扩展。此外,新的 Microsoft UI 技术 (WinRT) 也是基于 XAML 的,并且与 WPF 共享大部分概念。
  • @HighCore 注意。我将继续研究基于 WinForms 的方法,但肯定会开始使用 WPF。欢迎有兴趣的新手阅读任何建议。

标签: c# winforms ui-design


【解决方案1】:

如果您想在 WinForms 中执行此操作,您可以利用 visibility and enabled-ness are both "heritable" traits in the Windows model 这一事实。

换句话说,如果您将所有控件分组到父容器(如 Panel 或 UserControl)中,然后禁用该容器控件并使其不可见,则其所有子控件也将同样变为禁用和不可见。

我建议为层次结构的每个级别创建用户控件。思路与使用单独的表单几乎相同,只是它们实际上不是单独的表单。多个 UserControl 对象可以显示在一个表单上,因此您可以拥有任意数量的对象。这将所有相关控件放在一起,从而使管理更加容易。您还可以在 WinForms 设计器中单独与这些 UserControl 进行交互,就像它们是单独的表单一样,解决“混乱”问题。

要在“活动”层次结构之间切换,请遍历所有 UserControl 对象。使当前“活动”的一个启用并可见(它的所有子级将自动变为相同)。让其他人禁用和隐藏(他们所有的孩子都会自动变成同样的)。

不过,我不会在这里与 HighCore 争论。 如果您还不了解 WinForms,您也可以轻松地花时间学习 WPF。如果您决定这样做并想知道如何在该 UI 框架中完成相同的任务,请务必提出一个新问题。

【讨论】:

  • 我已经使用 WinForms 学习了 C# 的基础知识,但对 XAML 一无所知,因此我可能会创建一个 WinForms 版本作为原型。这听起来可行!我会试一试。
  • @CodyGray +1。我知道我们总有一天会就某件事达成一致。谢谢=)
猜你喜欢
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多