Кто занимался сераализацыей контролов в XML? Пожалуйста скажыте какой путь для етого Вы вибрали?
1.С помощю XmlSerializer
2.Через рефлексию
3.Штото свое...
Мне нужно сериализовать форму и все ее содержымоэ в XML и я не знаю каким способом ето лучше зделать штоб без дополнительного гемороя
Кто делал, поделитесь...
17.01.07 12:45: Перенесено модератором из '.NET' — TK
Здравствуйте, goodlogin, Вы писали:
G>Кто занимался сераализацыей контролов в XML?
Что под этим понимается? Где и как будет использоваться "сериализация"?
... << RSDN@Home 1.2.0 alpha rev. 670>>
Now playing: «Тихо в лесу…»
Вот к примеру как сериализуется нода (графический элемент) с TreeView и PictureBox-ом на ней (в PictureBox-e изображение):
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
[skipped]
<Anchor>Top, Bottom, Left, Right</Anchor>
<Controls IsList="True" Count="1">
<Item1 Ref="1" Type="Page" IsKey="True">
<BackColor>Window</BackColor>
<Controls IsList="True" Count="1">
<Item1 Ref="2" Type="RoundRectangleNode" IsKey="True">
<BackgroundColor>Window</BackgroundColor>
<Controls IsList="True" Count="3">
<Item1 Ref="3" Type="SelectionOverlay" IsKey="True">
<ContextMenu />
<Controls IsList="True" Count="0" />
<Cursor>SizeAll</Cursor>
<Location>210, 9</Location>
<Name />
<Size>171, 163</Size>
<TabIndex>6</TabIndex>
</Item1>
<Item2 Ref="4" Type="System.Windows.Forms.PictureBox" IsKey="True">
<BackgroundImage IsImage="True" Length="644285">
/9j/4R/+RXhpZgAAS[skipped: поток в текстовом представлении]
</BackgroundImage>
<Controls IsList="True" Count="0" />
<Location>11, 15</Location>
<Name />
<Size>195, 150</Size>
<TabIndex>3</TabIndex>
<TabStop>False</TabStop>
</Item2>
<Item3 Ref="5" Type="System.Windows.Forms.TreeView" IsKey="True">
<Controls IsList="True" Count="0" />
<Location>216, 15</Location>
<Name />
<Nodes IsList="True" Count="5">
<Node01 Ref="6" Type="System.Windows.Forms.TreeNode" IsKey="True">
<Name>Node0</Name>
<Text>Node0</Text>
</Node01>
<Node12 Ref="7" Type="System.Windows.Forms.TreeNode" IsKey="True">
<Name>Node1</Name>
<Text>Node1</Text>
</Node12>
<Node23 Ref="8" Type="System.Windows.Forms.TreeNode" IsKey="True">
<Name>Node2</Name>
<Text>Node2</Text>
</Node23>
<Node34 Ref="9" Type="System.Windows.Forms.TreeNode" IsKey="True">
<Name>Node3</Name>
<Text>Node3</Text>
</Node34>
<Node45 Ref="10" Type="System.Windows.Forms.TreeNode" IsKey="True">
<Name>Node4</Name>
<Text>Node4</Text>
</Node45>
</Nodes>
<Size>159, 151</Size>
<TabIndex>5</TabIndex>
</Item3>
</Controls>
<DockPoints IsList="True" Count="4">
<Item1 Ref="11" Type="DockPoint" IsKey="True">
<HeadConnections IsList="True" Count="0" />
<Location>128, 221</Location>
<TailConnections IsList="True" Count="0" />
</Item1>
<Item2 Ref="12" Type="DockPoint" IsKey="True">
<HeadConnections IsList="True" Count="0" />
<Location>530, 221</Location>
<TailConnections IsList="True" Count="0" />
</Item2>
<Item3 Ref="13" Type="DockPoint" IsKey="True">
<HeadConnections IsList="True" Count="0" />
<Location>329, 56</Location>
<TailConnections IsList="True" Count="0" />
</Item3>
<Item4 Ref="14" Type="DockPoint" IsKey="True">
<HeadConnections IsList="True" Count="0" />
<Location>329, 386</Location>
<TailConnections IsList="True" Count="0" />
</Item4>
</DockPoints>
<Font>Microsoft Sans Serif, 8.25pt</Font>
<ForegroundColor>ControlText</ForegroundColor>
<Location>136, 64</Location>
<Name />
<Size>392, 320</Size>
<StaticFrameColor>170, 170, 170</StaticFrameColor>
<Text />
</Item1>
</Controls>
<Elements IsList="True" Count="0" />
<GridColor>LightGray</GridColor>
<GridSize>8, 8</GridSize>
<Name />
<PageParams>Orientation = Portrait; Width = 793; Height = 1122</PageParams>
<SelectedNode IsRef="2" />
<Size>793, 1122</Size>
</Item1>
</Controls>
<CurrentPage IsRef="1" />
<Document Ref="15" Type="Document" IsKey="True">
<Name>Untitled</Name>
<Path>E:\My Documents\Untitled.ngc</Path>
</Document>
<Name />
<Pages IsList="True" Count="1">
<Item IsRef="1" />
</Pages>
<TabIndex>0</TabIndex>
[skipped]
Hello, "goodlogin"
> Кто занимался сераализацыей контролов в XML? Пожалуйста скажыте какой путь для етого Вы вибрали?
>
> 1.С помощю XmlSerializer
> 2.Через рефлексию
> 3.Штото свое...
>
> Мне нужно сериализовать форму и все ее содержымоэ в XML и я не знаю каким способом ето лучше зделать штоб без дополнительного гемороя
>
XmlSerializer лучше отбросить — Windows.Forms элементы не предназначены для использования вместе с ним. Для использования рефлексии нужно знать что именно надо рефлексировать. Так что в общем случае, рефлексия сама по себе тоже работать не будет...
Отстается только вариант что-то свое. Это может получиться наименее затратный по геморроям подход.
ЗЫ
Вообще, Windows Forms элементы управления умеют сериализоваться изначально. Называется эта CodeDomSerializer. Можно попробовать использовать его для получения Xml.
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Если просто сохранить layout, то рекурсивно обходишь контролы и вручную сериализуешь. Если нужны разного рода навороты, типа сериализации коллекций, изображений и т.д., то придется свой сериалзитор писать с графами и прочей лабудой. Могу продать. У меня есть готовая реализация, хорошо обкатанная.
Две капли морфия облегчат тебе жизнь.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение