Its possible, but it would need to be done manually. You could create an XML file where you store each configuration stream as a base 64 value in the file. Here is one way you could accomplish this for a toolbars manager and dock manager:
private void Form1_Load( object sender, EventArgs e )
{
if ( File.Exists( "config.xml" ) == false )
return;
using ( XmlTextReader reader = new XmlTextReader( "config.xml" ) )
{
reader.ReadStartElement( "Config" );
using ( MemoryStream stream = new MemoryStream( this.ReadBase64( reader ) ) )
this.ultraToolbarsManager1.LoadFromBinary( stream );
using ( MemoryStream stream = new MemoryStream( this.ReadBase64( reader ) ) )
this.ultraToolbarsManager1.LoadFromBinary( stream );
}
}
private void Form1_FormClosed( object sender, FormClosedEventArgs e )
{
using ( XmlTextWriter writer = new XmlTextWriter( "config.xml", Encoding.Default ) )
{
writer.WriteStartElement( "Config" );
writer.WriteStartElement( "ToolbarsConfig" );
using ( MemoryStream stream = new MemoryStream() )
{
this.ultraToolbarsManager1.SaveAsBinary( stream, true );
byte[ buffer = stream.GetBuffer();
writer.WriteBase64( buffer, 0, buffer.Length );
}
writer.WriteEndElement();
writer.WriteStartElement( "DockConfig" );
using ( MemoryStream stream = new MemoryStream() )
{
this.ultraDockManager1.SaveAsBinary( stream );
byte[ buffer = stream.GetBuffer();
writer.WriteBase64( buffer, 0, buffer.Length );
}
writer.WriteEndElement();
writer.WriteEndElement();
}
}
private byte[ ReadBase64( XmlTextReader reader )
{
List<byte> finalBuffer = new List<byte>();
byte[ buffer = new byte[ 1000 ];
while ( true )
{
int bytesRead = reader.ReadBase64( buffer, 0, buffer.Length );
if ( bytesRead < buffer.Length )
{
byte[ retValue = new byte[ finalBuffer.Count + bytesRead ];
Buffer.BlockCopy( finalBuffer.ToArray(), 0, retValue, 0, finalBuffer.Count );
Buffer.BlockCopy( buffer, 0, retValue, finalBuffer.Count, bytesRead );
return retValue;
}
else
{
finalBuffer.AddRange( buffer );
}
}
}