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

29/08/2013

Использование события выбора ячейки в таблице

В момент выбора ячейки вы можете захотеть узнать её номер ряда и колонки в таблице.

Подходящего события в публичном AutoCAD .NET API нет, но в пространстве имён "Autodesk.AutoCAD.Internal.Reactors" есть такое событие. Обратите внимание, что использование любых классов/методов из пространства имён "Internal" не поддерживается и они могут быть изменены в любое время. Так что если вы собираетесь их использовать, проверьте их полностью, чтобы убедиться что они работают корректно в вашем приложении.

Ниже приведен пример кода использующий событие "CellSelected" класса "Autodesk.AutoCAD.Internal.Reactors.TableSubSelectFilter".

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.Internal.Reactors;
  2.  
  3. void IExtensionApplication.Initialize()
  4. {
  5.     TableSubSelectFilter tsf = TableSubSelectFilter.Instance();
  6.     if (tsf != null)
  7.     {
  8.         tsf.CellSelected
  9.             += new TableSubSelectFilterEventHandler(tsf_CellSelected);
  10.     }
  11. }
  12.  
  13. void IExtensionApplication.Terminate()
  14. {
  15.     TableSubSelectFilter tsf = TableSubSelectFilter.Instance();
  16.     if (tsf != null)
  17.     {
  18.         tsf.CellSelected
  19.             -= new TableSubSelectFilterEventHandler(tsf_CellSelected);
  20.     }
  21. }
  22.  
  23. void  tsf_CellSelected(object sender, TableSubSelectFilterEventArgs e)
  24. {
  25.     if (! e.TableId.IsNull)
  26.     {
  27.         using (Transaction tr
  28.             = e.TableId.Database.TransactionManager.StartTransaction())
  29.         {
  30.             Table table
  31.                 = tr.GetObject(e.TableId, OpenMode.ForRead) as Table;
  32.  
  33.             if (table.HasSubSelection)
  34.             {
  35.                 CellRange cr = table.SubSelection;
  36.  
  37.                 System.Diagnostics.Debug.WriteLine
  38.                     (
  39.                         String.Format("\nОдна ячейка ? : {0}",
  40.                         cr.IsSingleCell)
  41.                     );
  42.  
  43.                 System.Diagnostics.Debug.WriteLine
  44.                     (
  45.                         String.Format("\nВерхняя строка : {0}",
  46.                         cr.TopRow)
  47.                     );
  48.  
  49.                 System.Diagnostics.Debug.WriteLine
  50.                     (
  51.                         String.Format("\nЛевая колонка : {0}",
  52.                         cr.LeftColumn)
  53.                     );
  54.  
  55.                 System.Diagnostics.Debug.WriteLine
  56.                     (
  57.                         String.Format("\nНижняя строка : {0}",
  58.                         cr.BottomRow)
  59.                     );
  60.  
  61.                System.Diagnostics.Debug.WriteLine
  62.                     (
  63.                         String.Format("\nПравая колонка : {0}",
  64.                         cr.RightColumn)
  65.                     );
  66.             }
  67.             tr.Commit();
  68.         }
  69.     }
  70. }

 

Источник: http://adndevblog.typepad.com/autocad/2013/02/using-the-table-cell-selected-event.html

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

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