WinForms中简单的菜单式导航

时间:2009-05-28 21:05:29

标签: .net winforms user-interface navigation

我正在编写一个非常简单的WinForms应用程序,几乎没有数据输入形式。但是在用户访问这些表单之前,她必须选择要采取的操作(即,可能在输入搜索查询后打开哪个表单)。由于此应用程序是对旧版自定义DOS FoxPro应用程序的重写,因此用户希望UI尽可能与旧版本相似(简单阅读)。 (请注意我不想讨论如何说服客户迁移到更现代的UI。)

现在,UI应如下所示:

│--------------│
│ Customers >> │ │-----------------│
│ Invoices     │ │ Find customer   │
│ -------------│ │ Create new      │
│ .. etc..     │ │ Delete customer │
│ -------------│ │-----------------│
│ Exit         │
│--------------│

菜单必须非常大并位于屏幕中间(窗体)。这意味着经典的MenuStrip是不可能的。我应该使用适当的项目动态创建ListBoxes吗?你会怎么做?我已经将导航结构存储在对象中,我正在寻找如何向用户呈现导航UI的建议。

此外,在这种情况下,键盘输入是必不可少的,并且比鼠标交互更重要。

3 个答案:

答案 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作为开始。