Простая навигация по меню в WinForms - PullRequest
0 голосов
/ 29 мая 2009

Я пишу очень простое приложение WinForms с несколькими формами ввода данных. Но прежде чем пользователь перейдет к этим формам, он должен выбрать, какое действие предпринять (т.е. какую форму открыть, возможно, после ввода поискового запроса). Поскольку это приложение переписывает устаревшее пользовательское приложение DOS FoxPro, пользователь хочет, чтобы пользовательский интерфейс был максимально похож (читается просто) на старый. (Обратите внимание, я не хочу обсуждать, как убедить клиента перейти на более современный пользовательский интерфейс.)

Теперь интерфейс должен выглядеть так:

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

Меню должно быть довольно большим и посередине экрана (форма). Это означает, что о классическом MenuStrip не может быть и речи. Должен ли я создавать списки на лету с соответствующими элементами? Как бы вы подошли к этому? У меня уже есть структура навигации, хранящаяся в объектах, я ищу совет, как представить пользовательский интерфейс навигации пользователю.

Кроме того, в этом случае ввод с клавиатуры важен и важнее взаимодействия с мышью.

Ответы [ 3 ]

1 голос
/ 29 мая 2009

Старый проект, над которым я работал, был преобразованием приложения DOS (Clipper) в Windows. Мы решили что-то похожее на это, с большим количеством веб-ощущений (гиперссылка в один клик):

- - - - - - - - - - - - - - - - - - - - - - - 
| Bolded Group Header | Bolded Group Header |
|   Item Link 1       |   Item Link 3       |
|   Item Link 2       |   Item Link 4       |
- - - - - - - - - - - - - - - - - - - - - - -

При двойном щелчке по заголовку группы все ссылки в этой группе сразу открываются в фоновом режиме. Кроме того, контекст приложения (например, выбранный клиент) был выбран с помощью панели инструментов, поэтому текущие данные клиента всегда отображались.

Технически, мы использовали элементы управления, унаследованные от TPanel (это было с помощью VCL в C ++ Builder) и метки клиентской области, но вы могли бы легко сделать нечто подобное в .NET.

Удачи!

РЕДАКТИРОВАТЬ: Просто чтобы обновить, так как вы упомянули о поддержке клавиатуры, Панели получают все сообщения Windows и нажатия клавиш, так что отвечать на них остается за вами (у нас была полная поддержка клавиатуры, но мы должны были написать это сами). Если вы хотите что-то, что будет работать без необходимости что-либо кодировать, я бы использовал ListView вместо элементов управления ListBox.

1 голос
/ 29 мая 2009

Я использовал набор управления Krypton для моего интерфейса Windows, он действительно прост в использовании плюс набор инструментов бесплатный. Он имеет несколько отличных контекстных меню параметров. Также имеется навигационный элемент управления, обеспечивающий стек пунктов меню.

0 голосов
/ 29 мая 2009

Я думаю, что вы можете сделать это с помощью элемента управления ToolStrip. Установите Dock = Нет и LayoutStyle = VerticalStackWithOverflow в качестве начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...