2010-10-05 3 views
2

Это скорее вопрос дизайна.Дизайн для динамического создания кнопок/меню в WinForms

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

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

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

Спасибо.

ответ

0

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

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

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

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

0

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

+0

ошибка, когда я сказал, что это вопрос дизайна, я не имел в виду дизайн пользовательского интерфейса. – neebz

Смежные вопросы