Я разрабатываю небольшую программу C#-winforms, в которой есть функция, позволяющая пользователям добавлять кнопки и различные элементы управления во время выполнения.
Сценарий, с которым я сталкиваюсь, выглядит следующим образом:
-
1) User adds a button and sets its properties (through a Dialog).
2) User adds a another control (also sets its properties).
3) User chooses the button and chooses bind from a Menu-strip item.
4) a new dialog will show , a DropDown menu will show all "other controls" , another DropDown will show (pre-coded) functions , users have to choose 1 of the controls and a function to bind them to the button's click event.
5) When the user chooses to release his design, an EXE file will be generated that will have the simple program the user designed (still thinking this step over )
Моя текущая идея реализации:
Словарь будет содержать все кнопки и соответствующие им связанные функции и элементы управления.. (Key = buttonID , Value = объект или словарь, содержащий имя функции и идентификатор элемента управления)..
Когда пользователь выбирает «Выпустить» свой дизайн, код создает форму и все элементы управления в виде ТЕКСТА и использует словарь для создания соответствующей кнопки кода, чтобы связать событие нажатия каждой кнопки с соответствующей функцией.
В ТЕКСТ также будут вставлены другие словари, которые будут сопоставлять каждую кнопку с ее связанным элементом управления (словарь для каждой функции), это будет использоваться, когда функция вызывается для различения между кнопками и различными связанными элементами управления.
ТЕКСТ будет вставлен в файл .cs, который будет скомпилирован для создания EXE (все еще думает о способах автоматизации этого шага).
Я чувствую, что это решение слишком сложное и что могут быть другие более простые решения.
ТИА
РЕДАКТИРОВАТЬ:
Это простой проект, целью которого является помочь непрограммистам создавать свои собственные простые программы, такие как инвентаризация супермаркета или библиотека DVD-магазина. На данный момент он будет выполнять простые задачи калькулятора (1 текстовое поле, пара кнопок и функций, таких как ADD, Subtract и тому подобное).