我正在编写一个非常简单的WinForms应用程序,几乎没有数据输入形式。但是在用户访问这些表单之前,她必须选择要采取的操作(即,可能在输入搜索查询后打开哪个表单)。由于此应用程序是对旧版自定义DOS FoxPro应用程序的重写,因此用户希望UI尽可能与旧版本相似(简单阅读)。 (请注意我不想讨论如何说服客户迁移到更现代的UI。)
现在,UI应如下所示:
│--------------│
│ Customers >> │ │-----------------│
│ Invoices │ │ Find customer │
│ -------------│ │ Create new │
│ .. etc.. │ │ Delete customer │
│ -------------│ │-----------------│
│ Exit │
│--------------│
菜单必须非常大并位于屏幕中间(窗体)。这意味着经典的MenuStrip是不可能的。我应该使用适当的项目动态创建ListBoxes吗?你会怎么做?我已经将导航结构存储在对象中,我正在寻找如何向用户呈现导航UI的建议。
此外,在这种情况下,键盘输入是必不可少的,并且比鼠标交互更重要。
答案 0 :(得分:1)
我所在的旧项目是将DOS(Clipper)应用程序转换为Windows。我们决定了类似的东西,更多的网络感觉(单击超链接):
- - - - - - - - - - - - - - - - - - - - - - -
| Bolded Group Header | Bolded Group Header |
| Item Link 1 | Item Link 3 |
| Item Link 2 | Item Link 4 |
- - - - - - - - - - - - - - - - - - - - - - -
双击组标题时,该组中的所有链接将在后台立即打开。此外,通过工具栏选择了应用程序的上下文(例如选定的客户),因此始终显示当前的客户详细信息。
从技术上讲,我们使用的是来自TPanel(这是在C ++ Builder中使用VCL)和客户端区域标签的控件,但您可以轻松地在.NET中执行类似的操作。
祝你好运! 编辑:只是为了更新,因为你提到键盘支持,Panels获取所有Windows消息和击键,因此响应它们取决于你(我们有完全的键盘支持但我们必须自己编写代码)。如果你想要一些只需要编码的东西,我就可以使用ListView而不是ListBox控件。答案 1 :(得分:1)
我一直在为我的windows ui使用Krypton控件套件,它非常简单易用,而且工具包是免费的。它有一些很棒的context menu选项。还有导航控件,它提供了一堆菜单选项。
答案 2 :(得分:0)
我认为您可以使用ToolStrip控件执行此操作。设置Dock = None和LayoutStyle = VerticalStackWithOverflow作为开始。