Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для yardie
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166

Класс для создания множества форм по заданным шаблонам

11.02.2011, 14:43. Показов 1692. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли написать класс, чтобы при помощи него плодить справочники(каждый имеет 4 формы со своими), и будет ли это правильно?

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

И как это и где реализовывать нужно?

Мне не нужно чтобы Вы сделали, просто объясните как можно более понятно для начинающего программиста))))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2011, 14:43
Ответы с готовыми решениями:

Строка: обрезать строку по заданным шаблонам
Народ подскажите может есть стандартные функции которые работают со строками, что бы не изобретать велосипед. Суть задачи: Есть строка...

Посоветуйте плагин (желательно бесплатный) для создания форм на странице
Посоветуйте плагин (желательно бесплатный) для создания форм на странице и последующего импорта данных в excel. Заранее благодарен!

Множества . Найти разность полученного множества с заданным
Всем доброго времени суток! Необходима ваша помощь. Никак не могу сделать второй пункт задачи.Суть задачи-найти 1)объединение множества...

6
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.02.2011, 14:59
Зачем плодить классы формы, если они подобные. Просто сделай, что бы на одну и ту же форму можно было грузить данные из разных файлов (я так предполагаю, данные у тебя в файлах хранятся).
0
 Аватар для yardie
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
11.02.2011, 15:10  [ТС]
Нет, данные в базе Ms sql, я к ним подключаюсь через DataSet,
Вод задумка по подробнее:
Как в 1С в моей программе будут справочники, организовано через контрол menuStrip,
меню будет раскрываться и там будет великое множество справочников, каждый справочник имеент 4 формы: форма для заполнения, и такая же для редактирования но немного изменённая, форма списка и такая же но тоже немного изменённая для выбора из списка,
Справочников будем много, и каждый описывать это гемор, особенно будет гемор когда понадобиться во все спрвочники внести изменеия к примеру по внесеню названий, то придёться все 50 справочников перелопатить.
П этому нужно сделать класс, который будет создавать и редактировать формы справочников, так я считаю логичнее
0
61 / 61 / 9
Регистрация: 17.02.2010
Сообщений: 101
11.02.2011, 16:48
Цитата Сообщение от yardie Посмотреть сообщение
Нет, данные в базе Ms sql, я к ним подключаюсь через DataSet,
Вод задумка по подробнее:
Как в 1С в моей программе будут справочники, организовано через контрол menuStrip,
меню будет раскрываться и там будет великое множество справочников, каждый справочник имеент 4 формы: форма для заполнения, и такая же для редактирования но немного изменённая, форма списка и такая же но тоже немного изменённая для выбора из списка,
Справочников будем много, и каждый описывать это гемор, особенно будет гемор когда понадобиться во все спрвочники внести изменеия к примеру по внесеню названий, то придёться все 50 справочников перелопатить.
П этому нужно сделать класс, который будет создавать и редактировать формы справочников, так я считаю логичнее
Вариант динамически создавать поля, кнопки, обработчики исходя из структуры БД.
Например имеем DataSet с 2-мя таблицами, и к примеру пользователь выбрал первую таблицу для просмотра и редактирования мы создаем форму котороя принимает таблицу в конструкторе и на основании ее создает текстовые поля, кнопки и привязки, привязывает ее к гриду и т.д.
C#
1
2
3
4
5
6
7
8
9
 private void CreateEditor(DataTable table)
        {
            foreach (DataColumn column in table.Columns)
            {
                if (column.DataType == typeof(string))
                       //Создать контрол для текста и привязать его к колонке
 
            }
        }
Советую почитать про DataBindings, например таким кодам можно привязать textbox к текущему значению в выбранной колонке с возможностью изменения для winform:
C#
1
2
3
4
//Первый параметр свойство элемента для привязки
//Второй параметр контекст данных(источник)
//Третий параметр свойтво контекста для привязки
textBox.DataBindings.Add("Text", table, table.NameColumn.ColumnName, true, DataSourceUpdateMode.OnPropertyChanged);
Если же вы используете wpf, то там с привязками все реализованно великолепно и примеров в сети полно.
0
 Аватар для yardie
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
11.02.2011, 18:36  [ТС]
а можно к примеру сделать освной какойто класс и все формы и контролы наследовать от него?

Добавлено через 33 секунды
К примеру так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
namespace VisualizaciyArendu
{
 
public partial class DimaForm:Form
{
FiledArray Fields;
public  DimaForm(){}
virtual public void FromDB(){}
virtual public void ToDB(){}
public ShowForm(Form pParent);
 
}
 
public partial class DimaFeildForm:Form
{
 
public  DimaFeildForm(){}
virtual public void FromDB(){}
virtual public void ToDB(){}
 
}
 
 
    public partial class Osnovnay : DimaFieldForm
    {
        public Osnovnay()
        {
            InitializeComponent();
        }
 
        private void ценыАрендыToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
        }
 
        private void новыйКонтрагентToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Kontragent frm2 = new Kontragent();
            frm2.Show();
        }
0
61 / 61 / 9
Регистрация: 17.02.2010
Сообщений: 101
11.02.2011, 19:58
А зачем? Я же написал как сделать создайте обычную форму, например она у нас будет реализовывать редактирование записей для любой таблицы и ей в конструктор передайте DataTable, и на основе данных из таблицы создайте содержимое для этой формы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public partial class EditTable : Form
    {
        private readonly DataTable _table;
 
        public EditTable(DataTable table)
        {
            InitializeComponent();
            _table = table;
            CreateEditor(table);
        }
 
 
         private void CreateEditor(DataTable table)
        {
            foreach (DataColumn column in table.Columns)
            {
                if (column.DataType == typeof(string))
                       //Создать контрол для текста и привязать его к колонке и положить на форму
               
            }
        }
    }
0
 Аватар для yardie
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
15.02.2011, 11:45  [ТС]
Цель классов уменьшить колво одинакого кода у разных справочников, т-к
они все одинаково устроены, по этому нужен класс!
в идеале должно быть так:

C#
1
ShowSpravochnikForm('Контрагенты', 'редактирование', 'id=123')
а эта функция создает нужную форму и привязывает к некоторым данным

DimaForm базовый для всеч моих форм, сам производный от form
содержит:
1. Датасет который отображает форма, вне зависимости как отображает
(списком полей, таблицей и тд)
2. Fields поля датасета, которые отображаются форме. Каждое поле
связывает имя поля данных и имя поля в таблице
3. Сервисные функции, которые нужны всем производным формам, например ShowForm
4. Виртуальные методы FromDB, ToDB, PrepareForm (подготовка формы
после создания и перед показом)

производные DimaFieldForm и DimaTableForm содержат конкретные
реализации форм (создания и редактирования) и (списка и отбора)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2011, 11:45
Помогаю со студенческими работами здесь

BAT-ник для создания файла с заданным текстом и вставка в него имен файлов и их расширения из списка
Добрый день В общем стоит такая задача: В некую папку C:\PATH периодически закидываются файлы вида file1.ext, file2.ext и тд. Нужен...

Класс для создания окна
Доброго времени суток уважаемые программисты! Помогите решить проблему которая заключается вот в чем. Есть класс который должен...

Класс для создания календаря
помогите пожалуйста создать класс для определения дня недели по календарной дате. Дата – три целых числа: число, месяц, год. Диапазон дат –...

Класс для создания динамической матрицы
Доброго времени суток.Уважаемые форумчане подскажите) делаю класс для динамического создания поля для игры сапёр. Столкнулся с проблемой....

Класс, который используется для обращения к объектам форм, внезапно перестал работать
Какая беда в общем. Есть класс,который используется для обращения к объектам форм(show(),hide() ,etc.). using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru