Событие изменения выборки элементов.

Автор Тема: Событие изменения выборки элементов.  (Прочитано 2398 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн А.BalmАвтор темы

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Добрый день!
В Revit есть 3 известных мне способа уведомлений о изменении выбранных на экране элементов, как описано в статье у Джереми https://thebuildingcoder.typepad.com/blog/2015/03/element-selection-changed-event.html.

  • Idling
  • Timer - таймер, который проверяет выборку
  • Событие, которое кидает Ribbon tab "Modify"

У каждого способа есть свои недостатки, у первых 2-х, связанные с производительностью, у последнего с точностью. Событие в Ribbon панели не возникает если пользователь щелкает последовательно на элементы той же категории, что и выбранный перед этим элемент.
Есть также панель свойств, в которой отображаются свойства всех элементов. Она реагирует на любое изменение выборки. Вопрос в том, что не понятно, как получить доступ, если это вообще возможно, к этой панели.

Так можно подписаться на событие PropertyChanged Ribbon панели:

Код - C# [Выбрать]
  1. private bool _subscribed = false;  
  2. public void SubscribeToSelectionEvent()
  3.         {
  4.  
  5.             foreach (Autodesk.Windows.RibbonTab tab in Autodesk.Windows.ComponentManager.Ribbon.Tabs)
  6.             {
  7.                 if (tab.Id == "Modify")
  8.                 {
  9.                     if (_subscribed)
  10.                     {
  11.                         tab.PropertyChanged -= SelectionEventHandler;
  12.                         _subscribed = false;
  13.                     }
  14.                     else
  15.                     {
  16.                         tab.PropertyChanged += SelectionEventHandler;
  17.                         _subscribed = true;
  18.                     }
  19.                     break;
  20.                 }
  21.             }
  22.         }

Код - C# [Выбрать]
  1. Autodesk.Windows.ComponentManager.Ribbon.Tabs
это все Ribbon  вкладки в интерфейсе Revit. Как можно добраться до панели свойств?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Modify tab может и не кидать событий. В параметрах Revit может быть отключено "При выборе отображать контекстную вкладку". Или, если, например, была выбрана стенка, добавляем к выбору ещё одну.

До панели свойств можно попробовать добраться с помощью WinAPI. Посмотри с помощью Spy++, она устанавливается вместе с утилитами Visual Studio.



Попробуй с помощью WinAPI подписаться на события изменения в combobox-а. Правда, надо иметь ввиду, что вкладку свойств может быть и закрыта...