Дизайн для динамического создания кнопок / меню в WinForms - PullRequest
2 голосов
/ 06 октября 2010

Это больше вопрос дизайна.

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

Поскольку это продукт с несколькими клиентами, нам необходимо включить / отключить / скрыть / показать кнопки в зависимости от приобретенных клиентом функций.

Как лучше всего реализовать такое иерархическое меню кнопок?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 октября 2010

Хорошо, мы сделали следующее:

у нас было два варианта:

  1. Сохранить все в базе данных, всю иерархию меню и кнопок.Создайте единую общую форму меню, а затем создайте кнопки в форме на лету.На бумаге это выглядело великолепно, но у нас было две проблемы.a) Первое создание кнопок на лету означало, что мы должны были реализовать их функциональность щелчка (то есть, какую форму открывать при нажатии) в единой универсальной функции, которая открывает форму через отражение.Это ограничивало нас, потому что у нас были проблемы с передачей пользовательских параметров в форму.Мы могли бы добавить несколько функций для этого, но тогда это создало бы один большой класс с большим количеством функций.Не совсем общий.б) Во-вторых, мы создали единую форму для всех меню, что означало, что мы не можем настроить форму (например, добавить другие элементы управления в верхний / нижний колонтитул) для разных форм.Опять же, мы могли бы это сделать, но для этого снова потребовалось бы много операций и т. Д.

  2. Создание статически всех меню и кнопок на уровне пользовательского интерфейса.И включить / отключить / скрыть / показать их на основе значений таблицы / конфигурации.Это было больше работы, чем # 1, но это дало нам большую гибкость с точки зрения нашего макета пользовательского интерфейса.

0 голосов
/ 06 октября 2010

Поместите кнопки меню (навигации) в меню и функциональные кнопки на закрепленной панели инструментов.

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