Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56

Как сохранить все свойства компонентов в файл?

26.05.2015, 12:49. Показов 1675. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Мне по сути нужен аналог writecomponent (delphi) в c#. Если нет то как можно передать в функцию компонент чтоб она записывала нужные для меня параметры?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2015, 12:49
Ответы с готовыми решениями:

Как сохранить все изображенное на форме в bmp файл программным образом
Здравствуйте. Подскажите пожалуйста как можно сохранить все изображенное на форме в виде bmp файла. Просто у меня создаются контролы с...

OpenFileFialog - как загрузить картинку и сохранить ее в качестве свойства BackGroundImage
Здравствуйте! Подскажите пожалуйста, как мне дать возможность пользователю загрузить с жесткого диска свою картинку и сохранить ее в...

Литература, где описаны все свойства компонентов
вобщем кровь из носу нужна литература где описаны все свойства компонентов и так далее. в Borland C++ Builder. Визуальное...

13
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
26.05.2015, 16:11
Если компонент (класс) самодельный, то простая сериализация. Иначе сериализация сложная)
Для чего нужна сериализация?
Сериализация и десериализация
0
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56
26.05.2015, 19:33  [ТС]
для стандартных компонентов таких как button, richtextbox, textbox, picterbox
0
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
26.05.2015, 19:51
По сути просто берёте любой компонент и вручную сохраняете нужные свойства куда надо. Можно создать классы, хранящие эту логику, но суть будет та же.
Чтение тоже нужно будет?
0
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56
26.05.2015, 20:36  [ТС]
по сути я хочу сделать прогу в котором пользователь может все свойства поменять, названия, размер, изображение , видимость и эти результаты сохранить в один файл. (В делфи все это просто реализовывается) Ну тогда как можно это все организовать через функцию. идея такова что я передаю компонент функцию, а это функция сохраняет однотипные свойства в файл.(просто не хочется для десятка компонентов прописывать запись в файл, а потом столько же прописывать для считывания)
0
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
26.05.2015, 20:41
Редактор свойств уже есть: https://rsdn.ru/article/dotnet/PropertyGridFAQ.xml
Сохранить проще чем считать. Некоторым свойствам очень важен порядок указания. Например Value, Minimum и Maximum.
Для каждого типа свойства придётся отдельно прописывать методы чтения/записи. Свойства всяко придётся перечислять, хотя бы имена. У компонента тип свойства и его значение по имени можно узнать через рефлексию. Список публичных свойств можно также вытащить через рефлексию.

А зачем всё это?
0
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56
26.05.2015, 20:54  [ТС]
как бы это не смешно звучало для тестовой оболочки (хотя в интернете их куча я хочу сам попробовать все это реализовать). Еще раз скажу в делфи это очень удобно получалось. С помощью writecomponent записываешь в один файл ( а он сохраняет все и изображение и текст) и считываешь также в порядке записи. Однако в C# приходится все эти свойства прописывать отдельно(text, name, location, size, visible и т.п.) и код получается мягко говоря большим. Извените за глупый вопрос а как текст и изображение сохранить в один файл?
0
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
26.05.2015, 21:00
Текст как текст. А изображение в формате base64 и в текст.

В Дельфи таким образом формы сохранялись, поэтому метод был предусмотрен. Здесь же все свойства настраиваются в коде InitializeComponents() в конструкторах.

См:
Code
1
2
3
4
5
6
7
8
9
10
11
xml method(component)
{
  получить список публичных свойств;
  перебрать список свойств {
    получить объект свойства;
    получить тип свойства;
    получить значение свойства;
    сохранить свойство определённого типа в xml;
  }
  вернуть xml;
}
0
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56
26.05.2015, 21:37  [ТС]
Извините, а можете конкретно для одного компонента код привести. xml ниразу не пользовался поэтому возникает множество вопросов как его использовать?
0
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
27.05.2015, 06:32
Лучший ответ Сообщение было отмечено novprog как решение

Решение

XML:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
XmlDocument doc = new XmlDocument();
doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
doc.AppendChild(doc.CreateElement("data"));
 
XmlNode nodeDevices = doc.DocumentElement.AppendChild(doc.CreateElement("devices"));
 
for (int index = 0; index < 100; index++)
{
    XmlNode nodeDevice = nodeDevices.AppendChild(doc.CreateElement("device"));
    nodeDevice.Attributes.Append(doc.CreateAttribute("deviceId")).Value = Convert.ToString(Guid.NewGuid(), CultureInfo.InvariantCulture);
 
    nodeDevice.AppendChild(doc.CreateElement("deviceId")).InnerText = Convert.ToString(Guid.NewGuid(), CultureInfo.InvariantCulture);
    nodeDevice.AppendChild(doc.CreateElement("serialNumber")).InnerText = Convert.ToString(index, CultureInfo.InvariantCulture);
    nodeDevice.AppendChild(doc.CreateElement("owner")).InnerText = "User";
}
 
doc.Save("document.xml");
Код одного компонента = код для всех компонентов.
1
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56
27.05.2015, 12:41  [ТС]
Спасибо огромное, не скажу что сходу понял все тонкости, но это мои пробелы в знаниях. Здесь надо как нибудь передавать компонент? и что бы вас не мучать глупыми вопросами не можете дать ссылки по работе с хml? Как сохранить и как считывать?
0
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
27.05.2015, 12:49
Здесь лишь пример создания XML документа (XMLDocument) и добавления нод (XmlNode) в него.
Про метаданные и рефлексию (Reflection): https://rsdn.ru/article/dotnet/refl.xml
Научитесь перебирать свойства объекта.
0
7 / 7 / 1
Регистрация: 26.05.2015
Сообщений: 56
27.05.2015, 16:02  [ТС]
Еще раз большое спасибо.
0
Эксперт .NET
 Аватар для Rius
13151 / 7709 / 1679
Регистрация: 25.05.2015
Сообщений: 23,496
Записей в блоге: 14
29.05.2015, 21:41
К примеру
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void processMembers(object o)
        {
            PropertyInfo []properties = o.GetType().GetProperties();
 
            foreach (var prop in properties)
            {
                object propValue = prop.GetValue(o);
                Type propType = prop.PropertyType;
                string propName = prop.Name;
 
                ...
            }
        }
Работает не во всех случаях.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2015, 21:41
Помогаю со студенческими работами здесь

Как сохранить в файл "свойства анонимного объекта"?
Делаю программку, которая читает текстовый файл, преобразует его в массив (каждый элемент - отдельное слово, текст разрезается по пробелу),...

Задан текстовый файл F. Переписать компоненты файла F в файл H, вставить в начале и середине строк символ пробела. Порядок компонентов сохранить
Задан текстовый файл F. Переписать компоненты файла F в файл H, вставить в начале и середине строк символ пробела. Порядок компонентов...

Как все свойства поместить в типизированный файл
Задача. Задан текстовый файл, содержащий фрагмент программы на Object Pascal. Найти все свойства и поместить их в типизированный файл в...

Сохранить значение свойства Enabled Combobox в ini-файл
драсти как сохранить настройки в ини файл enabled:=true? дайте соурс пожалуйста...

Как считать все данные о файлах и сохранить в xml файл?
Добрый день. Подскажите пожалуйста. Как считать все данные о файлах (как считать имя, его размер в Мб), находящихся в каталоге указываемый...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в 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