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

22/05/2014

Событие закрытия PaletteSet

PaletteSet в AutoCAD становится невидимым когда нажимается кнопка закрытия. Чтобы узнать что палитра закрыта можно использовать событие "StateChanged".

А вот и пример кода:

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.Windows;
  2.  
  3. static PaletteSet m_PalSet = null;
  4.  
  5. [CommandMethod (
  6.                  "ShowMyPalette",
  7.                  CommandFlags.Modal | CommandFlags.Session
  8.                 )]
  9. static public void Test1Method()
  10. {
  11.     Document doc
  12.             = Application.DocumentManager.MdiActiveDocument;
  13.  
  14.     Database db = doc.Database;
  15.     Editor ed = doc.Editor;
  16.  
  17.     if (m_PalSet == null)
  18.     {
  19.         m_PalSet = new PaletteSet("WPF Палитра", new Guid());
  20.  
  21.         m_PalSet.Size = new Size(400, 600);
  22.         m_PalSet.DockEnabled =
  23.             (DockSides)((int)DockSides.Left
  24.                         + (int)DockSides.Right);
  25.  
  26.         // Для пользовательского элемента управления WPF
  27.         MyWPFUserControl uc = new MyWPFUserControl();
  28.         m_PalSet.AddVisual("AddEnt", uc);
  29.  
  30.         // Для пользовательского элемента управления WinForm
  31.         // MyWinFormUserControl uc = new MyWinFormUserControl();
  32.         // m_PalSet.Add("Test", uc);
  33.  
  34.         m_PalSet.StateChanged += new PaletteSetStateEventHandler
  35.                                     (
  36.                                         PaletteSet_StateChanged
  37.                                     );
  38.  
  39.         // Показываем палитры
  40.         m_PalSet.EnableTransparency(true);
  41.         m_PalSet.KeepFocus = true;
  42.     }
  43.     m_PalSet.Visible = true;
  44.  }
  45.  
  46. static void PaletteSet_StateChanged(
  47.                                     object sender,
  48.                                     PaletteSetStateEventArgs e
  49.                                  )
  50. {
  51.     Editor ed
  52.         = Application.DocumentManager.MdiActiveDocument.Editor;
  53.  
  54.     ed.WriteMessage (
  55.                         "\nПалитра изменила состояние! Новое состояние: "
  56.                         + e.NewState.ToString()
  57.                     );
  58. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/04/event-for-paletteset-close.html

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

Опубликовано 22.05.2014