2009-05-28 153 views
0

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

现在,用户界面应该是这样的:

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

的菜单必须是相当大,并在屏幕(形式)的中间。这意味着经典的MenuStrip不存在问题。我应该使用适当的项目动态创建ListBox?你会如何处理这个问题?我已经有了存储在对象中的导航结构,我正在寻找如何向用户呈现导航UI的建议。

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

回答

0

我想你可以用ToolStrip控件来做到这一点。将Dock = None和LayoutStyle = VerticalStackWithOverflow设置为开始。

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中做类似的事情。

祝你好运!

编辑:只是为了更新,因为你提到的键盘支持,面板获得所有的Windows消息和击键,所以回应他们取决于你(我们有完整的键盘支持,但我们必须自己编码)。如果你想要的东西只需要工作,而不必编写任何代码,我会用ListView而不是ListBox控件。

1

我一直在为我的windows ui使用Krypton控件套件,它的使用非常简单,而且工具箱是免费的。它有一些伟大的context menu选项。还有提供一堆菜单选项的导航控件。