07/05/2015
Как определить, что PaletteSet только что создан в первый раз
В ряде случаев вам может понадобиться узнать создан ли ваш PaletteSet в первый раз или нет, для того чтобы задать его пристыковку (Docking) или еще для каких-то целей. Чтобы сделать это, можно сохранить собственное значение одновременно с сохранением PaletteSet, и которого нет и быть не может при первом создании этого PaletteSet.
Ниже пример кода, который устанавливает пристыковку по умолчанию к левой границе (DockSides.Left) при первом создании PaletteSet. В следующей сессии вариант пристыковки уже не меняется и PaletteSet должен вернуть позицию, в которую его установил пользователь.
Код - C#: [Выделить]
- 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("Первый раз – установим вариант пристыковки" );
- set.Dock = DockSides.Left;
- _isFirstTime = false ;
- }
- else
- {
- ed.WriteMessage("Не первый раз – ничего не делаем. Оставляем предыдущие установки");
- }
- }
- 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" );
- }
Источник: http://adndevblog.typepad.com/autocad/2015/04/finding-if-paletteset-is-newly-created.html
Автор перевода: Александр Ривилис
Отредактировано 07.05.2015 в 17:32:46
Обсуждение: http://adn-cis.org/forum/index.php?topic=2694
Опубликовано 07.05.2015Отредактировано 07.05.2015 в 17:32:46