0

我正在开发一个 winforms 客户端服务器应用程序,该应用程序将加载用于输入数据或检索数据或搜索数据的多种表单之一。我想在屏幕左侧放置按钮以选择右侧加载哪个表单,并在顶部放置通常的新建、打开、删除等按钮。

我开始通过制作一个 MDI 表单来解决这个问题,该表单会弹出一个子窗口,允许用户选择他们想要使用的应用程序。然后当他们选择它时,它将在右侧加载适当的表单并更新左侧按钮的文本和功能。我使用面板将表单加载到按钮表单(我称之为导航器)和应用程序表单中。当右侧的表单发生更改时,我必须使用事件来更改不同的按钮表单。我的一个朋友说我可能以错误的方式处理这个问题。他说可能有更好的设计模式或方法或控件已经为我做到了。

我什至不知道如何在网上搜索类似的东西。

有人可以给我一些指导吗?如果我指向正确的方向,我可以进行研究。也许有一个控件已经完成了这一切?谢谢你。

4

2 回答 2

0

我认为用于选择表单的左侧工具栏是一个很好的模式,但要使其可折叠(隐藏),以便用户可以使用所有桌面空间。

至于 MDI,我个人不喜欢它,因为它有点过时和混乱。但再次寻找形式和功能的平衡。

对于顶部工具栏,我会将其作为每个表单的一部分,以便对逻辑进行编程。将它们放在主表格上是不必要的并发症。

作为一个建议,你可以看看,设计 Web 界面,即使它更专注于网络,也可以为用户交互提供一些指导。

更多信息搜索ui模式用户交互设计

于 2013-10-23T15:09:38.027 回答
0

我们使用类似的模式。带有对象和任务菜单的 MDI 父级。每个对象/任务的 MDI 子表单(大约 30 个)。三组左侧“导航”按钮:1:1(调出l个相关对象)、1:N(显示相关对象列表-检查、设备等)、N:N:X(其他复杂关系或任务) . 正文有一个选项卡控件来分组数据。至少一个选项卡是用于 1:N 列表的 datagridview。

左侧导航按钮集取决于被管理的对象。我们动态添加按钮,但在大多数情况下它们是硬编码的——我们只是不使用工具箱将按钮放置在子窗体上。每个按钮集都在一个面板中 - 如果我要重新开始,我可能会使用 FlowPanel。

我们在其中一个更复杂的对象上构建“模型”表单,构建所有数据绑定逻辑,然后将该表单用作其他对象的基础。我们没有使用 Visual Studio/VB.Net 提供的继承。

我们进行自己的控制数据“绑定”。我们使用 ADO.Net 和 SQL Server。我们的子表单仅显示一条记录,并且不支持在向导生成的表单中看到的典型记录导航——这在我们的案例中工作正常,因为我们在数据中横向导航。例如,申请、建造授权、许可——然后是检查、更新等,所有这些都与一个设施有关。(我们是监管机构)

我们使用 VB.Net,因为很多业务逻辑都是在 VB6 中开发的。今天我仍然会使用 VB.Net 与 C# - 更容易用于业务逻辑和更易于维护的 IMO。

需要考虑的一个问题 - 有些人已经为 WinForms(和 VB.Net)提供了长刀。我看不到微软贬低 WinForms,但有些人提倡这一点。许多人无法欣赏 WinForms 的简单性(尽管灵活性有限),它使我们能够专注于正在完成的业务。我一直在看 WPF,但根本看不到它提供的所有 UI 功能的用处。WPF 支持者将推动 MVVM,但这只是小规模开发或生产(20 个用户使用桌面 oa LAN)环境不需要的复杂性。WPF 不会导致我们的横向导航。

于 2013-10-23T16:37:17.610 回答