Sapun4ik
@Sapun4ik

Как сделать изменяемый интерфейс на стороне клиента c# WinForm?

Доброе время суток.
Необходимо что бы администратор программы мог добавить новый label, текстовое поле, изображение, мб даже форму. (Модифицировать интерфейс). После чего у всех пользователей все изменения были применены.
По сути, должна быть программа для работы с базой данных, и обычный пользователь мог добавить поле, сформировать запрос, и радоваться жизни=)
Подскажите пожалуйста если есть какие мысли по решению данной задачи.
  • Вопрос задан
  • 361 просмотр
Пригласить эксперта
Ответы на вопрос 3
Nipheris
@Nipheris Куратор тега C#
> Подскажите пожалуйста если есть какие мысли по решению данной задачи.
Есть мысль поставить задачу более конкретно. Понять, что это за "поля", которые можно добавить, к каким сущностям будут привязаны эти поля, какие будут к этим полям запросы, будут ли поля глобальны для всех пользователей, или же они свои у каждого пользователя, и другим не видны.

> Необходимо что бы администратор программы мог добавить новый label, текстовое поле, изображение, мб даже форму.
Я не уверен в том, что вы действительно заходите администратору программы давать выполнять такие действия, т.к. он будет понемногу превращаться в программиста. Рано или поздно (а скорее всего рано) клиентам захочется добавлять еще и логику на формы, они попросят для этого язык, и уже целиком превратятся в программистов.

Я представляю решение вашей задачи как мини-IDE + шелл для работы с базой (непонятно кстати, какой лучше - SQL или, например, документной) в одном флаконе. Такие решения в общем-то существуют и имеют смысл - достаточно вспомнить про 1C с его конфигурациями и средствами разработки, или, например, про Лексему. Однако, я не уверен, что вы хотите и сможете получить подобное решение, раз задаете такой вопрос). Мне все-таки кажется, что ваша проблема более частная, а желание дать возможность администратору клепать формочки - острый недостаток в проработанном техническом задании и/или нежелание вашего клиента платить вам в последствии за развитие и техническую поддержку продукта, которое выливается в попытку переложить рутинные задачи (эти самые "новые поля", "новые формы и лэйблы" и прочие вещи) на дешевые кадры. В общем-то в этом есть смысл, однако чтобы это организовать, нужно довольно много стартовых затрат.
Ответ написан
Комментировать
@Flashmond
Студент, инженер-программист c#
1) Добавить в базу данных таблицы, недоступные пользователям, а только приложению. В таблицы поместить требуемые поля компонентов. При запуске приложения загружать описание компонентов из БД и генерировать их.
Если требуется еще реализация методов - почитать про генерацию кода.
2) Сделать обновление приложения. При запуске приложения идёт проверка, какая версия используется. Если не последняя - обновить. Прочитать про обновление можно на хабре.
Ответ написан
Комментировать
@MonkAlex
C#, SQL, Delphi, C++ etc
Сама идея добавить контрол - несложная.

А вот взаимодействие контрола с остальными или с базой - сразу поломает вам всё удовольствие, потому как без продуманной архитектуры ничего из этого не сделать на коленке.

ПС: так что я бы не делал вообще то, что вы просите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы