【问题标题】:Simple menu-like navigation in WinFormsWinForms 中类似菜单的简单导航
【发布时间】:2009-05-28 21:05:28
【问题描述】:

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

现在,用户界面应该如下所示:

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

菜单必须非常大并且位于屏幕(窗体)的中间。这意味着经典的 MenuStrip 是不可能的。我应该使用适当的项目即时创建列表框吗?你会如何处理这个问题?我已经将导航结构存储在对象中,我正在寻找如何向用户展示导航 UI 的建议。

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

【问题讨论】:

    标签: .net winforms user-interface navigation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我参与的一个旧项目是将 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 控件。

      【讨论】:

        【解决方案3】:

        我认为您可以使用 ToolStrip 控件来做到这一点。设置 Dock=None 和 LayoutStyle=VerticalStackWithOverflow 作为开始。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-18
          • 2017-09-07
          • 2018-08-25
          • 2014-10-31
          • 1970-01-01
          • 2023-03-03
          • 2021-04-10
          • 1970-01-01
          相关资源
          最近更新 更多