Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 3

Сохранение созданного в локальный файл

19.11.2010, 21:50. Показов 1264. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня следующий вопрос.. Но для начала думаю есть смысл описать ситуацию. Мне необходимо создать "Менеджер интерфейсов", это что-то вроде того, что как раз предлагает нам вижуал, только в более простом варианте естественно. Кхм.. Имеется скажем стартовая форма, на которой есть 2 кнопочки: режим конструктора и режим теста. По нажатию первой открываются еще три кнопочки: создание формы, кнопки и рисунка. Типа создаем все эти компоненты, задаем им некоторые самые простые свойства: имя, стиль, для кнопки можно придумать кое-какие обработчики событий(типа открытие веб странички и тп) для рисунка указание пути к изображению и прочее, прочее. Так вот.. когда юзеру надоест создавать формы и накидывать на них всяческие элементы, необходимо сделать как-нибудь так, что все его труды не пропали даром, т.е. необходимо это все созданное сохранить в локальный файл. Чтобы потом когда запустили программу, он смог загрузить свой шедевр.. Вот и вопрос: каким образом это можно реализовать? Только, пожалуйста, если можно не общую концепцию, а пример какой-нибудь(скажем с сохранением созданной кнопки).. Заранее премного благодарен, хотя за то, что прочитали
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2010, 21:50
Ответы с готовыми решениями:

Сохранение динамически созданного контролла
Как это можно осуществить и вообще возможно ли?

Delphi->VBA->AutoCAD, сохранение объекта созданного посредством sendcommand в переменную
Добрый день! Создаю спиральку через Delphi с помощью команды v.ActiveDocument.Sendcommand(...) в AutoCAD. Затем мне нужно сделать из...

Сохранение письма на локальный диск перед отпарвкой
Коллеги, привет! Подскажите, пожалуйста, можно ли создавая письмо методом ниже, после команды .display или .send сохранить...

3
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
19.11.2010, 23:21
пролог перед примером: советую сохранять в виде файла XML, это что-то вроде БД. С ним легко работать и не над писать парсер для текста в отличии от текстового файла.
Однако пример приведу на текстовом файле:
скажем в файле контролы обозначаем таким образом [Control], например для кнопки [Button] далее пусть идут своиства контрола таким образом


name=button1
width=100
height=150
left=10
top=20
backgroundColor=150,100,20
//это RGB цвета

теперь реализуем запись для скажем той же кнопки
скажем на форме есть копка с описанными выше свойствами и именем button1

C#
1
2
3
4
5
6
7
8
9
using System.IO;
 
StreamWriter sw=new StreamWriter("ИМЯ ФАЙЛА");//созадали стрим райтер для файла
string cofiguration="[Button]\n";//   \n это переход строки
confiration+="name="+button.Name+"\n";
configuration+="width="+button.Width+"\n";
//И ТАК ДАЛЕЕ С ДРУГИМИ properties
sw.Write(configuration);//записали строку configuration в файл
sw.Close();//закрыли стрим райтер
все запись конфигурации в файл сделана.
теперь нужно осуществить чтение из файла, парсить его нужным образом(то есть обрабатывать) и создавать кнопку
далее пример

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
using System.IO;
 
StreamReader sr=new StreamReader("ИМЯ ФАЙЛА");//создали стрим ридер для файла конфигурации
string config=sr.ReadToEnd();//прочли файл и приписали его содержание строке config
sr.Close();//закрыле стрим ридер
string[] settings=config.Split('\n');//разделили строку config через '\n' то есть получили все строки в файле отдельно в массив строкsettings
//теперь обработаем строку типа контрола (я тут обрабатываю конечно первую потому что это пример далее при написании твоего парсер придется проверять и эту строку тоже)
string controlName=settings[0].Split('[',']')[1];//разделили первую строку в settings через символы '[' и ']' взяли вторую строку в массиве полученном при разделили поскольку там текст типа контрола 
if(controlName=="Button")
{
Button bt=new Button();//создали кнопку
}
else
{
//если другой контрол создаем его.....
}
}
//и так далее
//дальше обработаем все остальные строки которые являются свойствами
for(int i=1;i<settings.Length;i++)
{
switch(settings[i].Split(''=")[0]=="name")//если строка раделенная через '=' (поскольку вид строк property имеет вид name=button1) равняется далее перечисляем
{
case "name":
bt.Name=settings[i].Split(''=")[1];
break;
case "width":
bt.Width=Convert.ToInt32(settings[i].Split(''=")[1]);
//И ТАК ДАЛЕЕ
break;
} 
} 
Form1.Controls.Add(bt);//добавили кнопку на форму
все подробно описано, надеюсь понятно.
ВСЕ. ЭТО БЫЛО ДОЛГО!
1
 Аватар для Lucius Kain
129 / 129 / 22
Регистрация: 10.11.2010
Сообщений: 313
20.11.2010, 00:23
atilla89, советую обратить внимание на класс TypeDescriptor. Думаю это сууущественно упростит задачу
C#
1
2
var a = (from PropertyDescriptor item in TypeDescriptor.GetProperties(new Control())
             select new { name = item.Name, value = item.GetValue(new Control()) });
0
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 3
20.11.2010, 14:13  [ТС]
Бельфегор, огромное спасибо. Сегодня же испробую ваш метод.
Lucius Kain, а можно с примером Я так понимаю по вашему подмигиванию, все очень при очень просто)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2010, 14:13
Помогаю со студенческими работами здесь

Создать файл из квадратов элементов заданного массива. Получить файл из удвоенных элементов созданного файла.
Создать файл A, компонентами которого являются элементы массива C в квадрате. Получить файл D, каждая компонента которого равна компоненте...

Добавить к программе след действия: Сохранение и загрузка информации в текст. файл. Сохранение и загрузка информации в типизированный файл.
Помогите добавить к программе след действия: Сохранение и загрузка информации в текст. файл. Сохранение и загрузка информации в...

Сохранение положения компонента на форме (Сохранение параметра в Ini-файл)
Не знаю верно ли назвал тему. Доброго вечера тебе, всяк сюда входящий. Подскажите пожалуйста с вопросом: Имеется Form1, на нем...

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

Не находится заголовочный файл созданного компонента
Пробую создать новый компонент на основе базового. Знаний по этой теме очень мало, обучаюсь по Архангельскому. Создал заготовку компонента,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru