You may want to know if your PaletteSet is being created for the very first time to set its Docking or for any other purpose. To do this, you can save custom data when the PaletteSet gets saved which obviously will not be available at the very first time the PaletteSet is loaded.
Here is a sample code to set the default docking of a PaletteSet to DockSides.Left when it gets created. In subsequent sessions, the docking is not changed and the PaletteSet should retain the position that was set by the user.
using Autodesk.AutoCAD.Windows;
static bool _isFirstTime = true ;
MyUserControl ctrl = null;
PaletteSet set = null;
[CommandMethod("Test" )]
public void commandMethodTest()
{
if (set == null)
{
set = new PaletteSet("MyPalette" ,
new Guid("{43FFB063-DF0B-474B-9856-7886305CC3E8}" ));
set.Load +=
new PalettePersistEventHandler
(ps_Load);
set.Save +=
new PalettePersistEventHandler
(ps_Save);
if (ctrl == null)
{
ctrl = new MyUserControl();
set.Add("MyPalette" , ctrl);
set.Style = PaletteSetStyles.ShowCloseButton;
}
}
set.Visible = true ;
Document doc
= Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
if (_isFirstTime)
{
ed.WriteMessage("First Time, Set the Dock status" );
set.Dock = DockSides.Left;
_isFirstTime = false ;
}
else
{
ed.WriteMessage("Not the first time, Do nothing.
Leave it to the previous settings");
}
}
private static void ps_Load(object sender,
PalettePersistEventArgs e)
{
String sIsFirstTime =
(String)e.ConfigurationSection.ReadProperty
("IsFirstTime" , "Yes" );
if (sIsFirstTime.Equals("No" ))
{
_isFirstTime = false ;
}
}
private static void ps_Save(object sender,
PalettePersistEventArgs e)
{
e.ConfigurationSection.WriteProperty(
"IsFirstTime" , "No" );
}