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" );
}
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" );
}
VB.net 代码转换:
Imports Autodesk.AutoCAD.Windows
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Public Class Class1
Dim isFirstTime As Boolean = True
Dim MyCtrl As MyUserControl = Nothing
Dim P_set As PaletteSet = Nothing
<CommandMethod("Test")> _
Public Sub commandMethodTest()
'On Error Resume Next
If P_set = Nothing Then
P_set = New PaletteSet("新建选项板", New Guid("{43FFB063-DF0B-474B-9856-7886305CC3E8}"))
End If
AddHandler P_set.Load, AddressOf PS_Load
AddHandler P_set.Save, AddressOf PS_Save
If MyCtrl Is Nothing = True Then
MyCtrl = New MyUserControl
P_set.Add("新建选项板", MyCtrl)
P_set.Style = PaletteSetStyles.ShowCloseButton
P_set.Visible = True
End If
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acEditor As Autodesk.AutoCAD.EditorInput.Editor = acDoc.Editor
If isFirstTime = True Then
acEditor.WriteMessage("第一次建立选项板,居左停靠。")
P_set.Dock = DockSides.Left
isFirstTime = False
Else
acEditor.WriteMessage("不是初次建立选项板, 按上一次位置停靠。")
End If
End Sub
Private Sub PS_Load(ByVal sender As Object, ByVal e As PalettePersistEventArgs)
Dim sIsFirstTime As String = e.ConfigurationSection.ReadProperty("IsFirstTime", "Yes")
If sIsFirstTime.Equals("No") = True Then
isFirstTime = False
End If
End Sub
Private Sub PS_Save(ByVal sender As Object, ByVal e As PalettePersistEventArgs)
e.ConfigurationSection.WriteProperty("IsFirstTime", "No")
End Sub
End Class
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Public Class Class1
Dim isFirstTime As Boolean = True
Dim MyCtrl As MyUserControl = Nothing
Dim P_set As PaletteSet = Nothing
<CommandMethod("Test")> _
Public Sub commandMethodTest()
'On Error Resume Next
If P_set = Nothing Then
P_set = New PaletteSet("新建选项板", New Guid("{43FFB063-DF0B-474B-9856-7886305CC3E8}"))
End If
AddHandler P_set.Load, AddressOf PS_Load
AddHandler P_set.Save, AddressOf PS_Save
If MyCtrl Is Nothing = True Then
MyCtrl = New MyUserControl
P_set.Add("新建选项板", MyCtrl)
P_set.Style = PaletteSetStyles.ShowCloseButton
P_set.Visible = True
End If
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acEditor As Autodesk.AutoCAD.EditorInput.Editor = acDoc.Editor
If isFirstTime = True Then
acEditor.WriteMessage("第一次建立选项板,居左停靠。")
P_set.Dock = DockSides.Left
isFirstTime = False
Else
acEditor.WriteMessage("不是初次建立选项板, 按上一次位置停靠。")
End If
End Sub
Private Sub PS_Load(ByVal sender As Object, ByVal e As PalettePersistEventArgs)
Dim sIsFirstTime As String = e.ConfigurationSection.ReadProperty("IsFirstTime", "Yes")
If sIsFirstTime.Equals("No") = True Then
isFirstTime = False
End If
End Sub
Private Sub PS_Save(ByVal sender As Object, ByVal e As PalettePersistEventArgs)
e.ConfigurationSection.WriteProperty("IsFirstTime", "No")
End Sub
End Class
[本日志由 tiancao1001 于 2015-05-10 09:36 PM 编辑]
|
暂时没有评论
发表评论 - 不要忘了输入验证码哦! |