0

I am writing a very simple WinForms application with few data-entry forms. But before the user gets to these forms, she has to select which action to take (ie which form to open, possibly after entering a search query). As this application is a rewrite of a legacy custom DOS FoxPro app, the user wants the UI to be as similar (read simple) to the old one as possible. (Please note I do not want to discuss how to persuade the customer to migrate to a more modern UI.)

Now, the UI should look like this:

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

The menu has to be quite large and in the middle of the screen (form). This means that classic MenuStrip is out of the question. Should I create ListBoxes on the fly with the appropriate items? How would you approach this? I already have the navigation structure in stored in objects, I am looking for advice how to present the navigation UI to the user.

Also, in this case keyboard input is essential and more important than mouse interaction.

4

3 回答 3

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 控件。

于 2009-05-28T21:37:07.160 回答
1

我一直在为我的 windows ui使用Krypton控制套件,它使用起来非常简单,而且该工具包是免费的。它有一些很棒的上下文菜单选项。还有一个导航控件,它提供了一堆菜单选项。

于 2009-05-28T21:37:39.373 回答
0

我认为您可以使用 ToolStrip 控件来执行此操作。设置 Dock=None 和 LayoutStyle=VerticalStackWithOverflow 作为开始。

于 2009-05-28T21:34:04.280 回答