0

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

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

4

1 回答 1

1

如果您想在 WinForms 中执行此操作,则可以利用可见性和启用性都是Windows 模型中的“可遗传”特征这一事实。

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

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

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

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

于 2013-04-03T22:47:46.200 回答