ADN Open CIS
Сообщество программистов Autodesk в СНГ

07/05/2015

Как определить, что PaletteSet только что создан в первый раз

В ряде случаев вам может понадобиться узнать создан ли ваш PaletteSet в первый раз или нет, для того чтобы задать его пристыковку (Docking) или еще для каких-то целей. Чтобы сделать это, можно сохранить собственное значение одновременно с сохранением PaletteSet, и которого нет и быть не может при первом создании этого PaletteSet.

Ниже пример кода, который устанавливает пристыковку по умолчанию к левой границе (DockSides.Left) при первом создании PaletteSet. В следующей сессии вариант пристыковки уже не меняется и PaletteSet должен вернуть позицию, в которую его установил пользователь.

Код - C#: [Выделить]
  1. using  Autodesk.AutoCAD.Windows;
  2. static  bool  _isFirstTime = true ;
  3. MyUserControl ctrl = null;
  4. PaletteSet set = null;
  5.  
  6. [CommandMethod("Test" )]
  7. public  void  commandMethodTest()
  8. {
  9.   if  (set == null)
  10.   {
  11.     set = new  PaletteSet("MyPalette" ,
  12.       new  Guid("{43FFB063-DF0B-474B-9856-7886305CC3E8}" ));
  13.  
  14.     set.Load +=
  15.       new  PalettePersistEventHandler
  16.       (ps_Load);
  17.  
  18.     set.Save +=
  19.       new  PalettePersistEventHandler
  20.       (ps_Save);
  21.  
  22.     if  (ctrl == null)
  23.     {
  24.       ctrl = new  MyUserControl();
  25.       set.Add("MyPalette" , ctrl);
  26.       set.Style = PaletteSetStyles.ShowCloseButton;
  27.     }
  28.   }
  29.   set.Visible = true ;
  30.  
  31.   Document doc
  32.     = Application.DocumentManager.MdiActiveDocument;
  33.   Editor ed = doc.Editor;
  34.  
  35.   if  (_isFirstTime)
  36.   {
  37.     ed.WriteMessage("Первый раз – установим вариант пристыковки" );
  38.     set.Dock = DockSides.Left;
  39.     _isFirstTime = false ;
  40.   }
  41.   else
  42.   {
  43.     ed.WriteMessage("Не первый раз – ничего не делаем. Оставляем предыдущие установки");
  44.   }
  45. }
  46.  
  47. private  static  void  ps_Load(object sender,
  48.                                PalettePersistEventArgs e)
  49. {
  50.   String sIsFirstTime =
  51.     (String)e.ConfigurationSection.ReadProperty
  52.     ("IsFirstTime" , "Yes" );
  53.   if  (sIsFirstTime.Equals("No" ))
  54.   {
  55.     _isFirstTime = false ;
  56.   }
  57. }
  58.  
  59. private  static  void  ps_Save(object sender,
  60.                                PalettePersistEventArgs e)
  61. {
  62.   e.ConfigurationSection.WriteProperty(
  63.     "IsFirstTime" , "No" );
  64. }


Источник: http://adndevblog.typepad.com/autocad/2015/04/finding-if-paletteset-is-newly-created.html

 

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=2694

Опубликовано 07.05.2015
Отредактировано 07.05.2015 в 17:32:46