Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сериализация контролов на форме, либо же сериализация формы в XML C#

39K
18 мая 2008 года
NOBLE
2 / / 18.05.2008
При сериализации столкнулся с такой проблемой, в С# vs2005 F.W 2.0 Не могу осуществить сериализацию контролов с формы в XML.Пробывал поискать сериализацию формы Form1 :Form не выходит. Ниже приведен код который сериализует любой класс с пометкой [Serializable]. Как его изменить чтобы сериализовать контролы с формы либо форму целиком.

//сохранение в XML
void СохранитьToolStripMenuItem1_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "Test files (.xml)|*.xml";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.InitialDirectory = ".";
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.FileName = "Test";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
Stream myStream = null;
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
SoapFormatter myXMLFormat = new SoapFormatter();
MyClass myXML = new MyClass();
myXMLFormat.Serialize(myStream,myXML);//вот тут и возникает проблемма если к примеру myXML имеет тип Form или же Panel
myStream.Close();
}
}
}
//меню открыть из XML
private void ОткрытьToolStripMenuItem1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Test files (.xml)|*.xml";
openFileDialog1.FilterIndex = 1;
openFileDialog1.InitialDirectory = ".";
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Stream myStream = null;
if ((myStream = openFileDialog1.OpenFile()) != null)
{
SoapFormatter myXMLFormat = new SoapFormatter();
MyClass myCar = (MyClass)myXMLFormat.Deserialize(myStream);
myStream.Close();
}
}
}

Класс Который прокатывет присериализации в примере
[Serializable]
public class MyClass
{
//MyClass Mxx = new MyClass();
public int ID;
public DateTime Date;
public string Text;
// public Control val_control; а так уже не катит

}
5
20 мая 2008 года
hardcase
4.5K / / 09.08.2005
Насколько мне известно форму сериализовать таким способом не получится, да и не могу представить, зачем вам это потребовалось.
Если для сохранения некоторых параметров котролов (положение например), то всегда можно сделать это самостоятельно. Обычно нужно сохранить положение и видимость/невидимость известного (и очень ограниченного) количества компонент.

Во всяком случае можно реализовать интерфейс ISerializable и записать нужные параметры вручную (или записать объект-заглушку), для этого нужно написать реализацию метода GetObjectData.
39K
21 мая 2008 года
NOBLE
2 / / 18.05.2008
Спасибо за совет!Данную проблему я решил через созданный класс контейнер в который заганяються параметры контрола:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог