我在为桌面应用程序开发 GUI 方面几乎没有经验,但我想开发一个典型的 GUI 来创建/编辑实体(例如客户、供应商等),这在许多情况下都是相似的,并且对用户来说很舒服。
[* 请不要关闭问题。我为准备问题付出了很多努力,我真的需要帮助。*]
在分析了我们的任务后,我设计了以下可能的选项:
1)在简单的情况下,可以通过使用普通网格来解决任务:
即工作流程是: 在按下添加按钮时,将新行添加到网格中。在按下 Delete 时,用户会被要求确认他/她是否真的想要删除焦点实体实例。按下 Save 后,所有先前所做的更改都会被保存。按下关闭时,表单将关闭(询问用户是否要在关闭前保存更改)。
缺点:我认为这样的 GUI 只适用于非常简单的情况。在网格中编辑复杂的东西对用户和开发人员来说都不舒服(我认为在网格中实现复杂的编辑并非易事)。
2)对于更复杂的实体,以下选项是可能的:
此处仅在只读模式下使用网格。按下 Add a modal form 以填充有关新实体的信息。在该表单中按 OK 时,验证数据,如果一切正常,则将对象添加到网格数据源。双击网格行时,将显示用于编辑所选实体实例的相同表单。
缺点:对于每个实体,我们必须创建 2 个表单。
3)另一种可能的选择:
网格也处于只读模式。当聚焦网格中的一行时,网格上方的字段将被填充,用户可以对其进行编辑。在按下 Add 时,会创建一个新的实体实例(对象)并将其添加到网格的数据源中,然后聚焦新行,清除网格上方的字段(此处提供绑定帮助),光标放置在第一个字段上,用户可以开始打字。
我在这里看不到任何缺点,只是您可能没有足够的位置放置网格和同一表单上的字段。我喜欢这个选项,虽然我不记得我在任何地方看到过。
我试图让我的程序的用户帮助我决定哪个 GUI 更适合他们,但典型的答案是“我认为这两个选项都可以”或“我不知道,你决定哪个更好”。
现在我想问有GUI设计经验的人以下问题:
1)您通常使用哪个选项?也许另一个(上面没有显示)?
2) 如果您还对您的实现(数据集/自定义业务对象/绑定等)说几句话,那就太好了。
3) 您在我的选择中注意到哪些缺点?
4) 关于我能读到的关于这个主题的任何建议?
谢谢你的帮助!