29/08/2013
Использование события выбора ячейки в таблице
В момент выбора ячейки вы можете захотеть узнать её номер ряда и колонки в таблице.Подходящего события в публичном AutoCAD .NET API нет, но в пространстве имён "Autodesk.AutoCAD.Internal.Reactors" есть такое событие. Обратите внимание, что использование любых классов/методов из пространства имён "Internal" не поддерживается и они могут быть изменены в любое время. Так что если вы собираетесь их использовать, проверьте их полностью, чтобы убедиться что они работают корректно в вашем приложении.
Ниже приведен пример кода использующий событие "CellSelected" класса "Autodesk.AutoCAD.Internal.Reactors.TableSubSelectFilter".
Код - C#: [Выделить]
- using Autodesk.AutoCAD.Internal.Reactors;
- void IExtensionApplication.Initialize()
- {
- TableSubSelectFilter tsf = TableSubSelectFilter.Instance();
- if (tsf != null)
- {
- tsf.CellSelected
- += new TableSubSelectFilterEventHandler(tsf_CellSelected);
- }
- }
- void IExtensionApplication.Terminate()
- {
- TableSubSelectFilter tsf = TableSubSelectFilter.Instance();
- if (tsf != null)
- {
- tsf.CellSelected
- -= new TableSubSelectFilterEventHandler(tsf_CellSelected);
- }
- }
- void tsf_CellSelected(object sender, TableSubSelectFilterEventArgs e)
- {
- if (! e.TableId.IsNull)
- {
- using (Transaction tr
- = e.TableId.Database.TransactionManager.StartTransaction())
- {
- Table table
- = tr.GetObject(e.TableId, OpenMode.ForRead) as Table;
- if (table.HasSubSelection)
- {
- CellRange cr = table.SubSelection;
- System.Diagnostics.Debug.WriteLine
- (
- String.Format("\nОдна ячейка ? : {0}",
- cr.IsSingleCell)
- );
- System.Diagnostics.Debug.WriteLine
- (
- String.Format("\nВерхняя строка : {0}",
- cr.TopRow)
- );
- System.Diagnostics.Debug.WriteLine
- (
- String.Format("\nЛевая колонка : {0}",
- cr.LeftColumn)
- );
- System.Diagnostics.Debug.WriteLine
- (
- String.Format("\nНижняя строка : {0}",
- cr.BottomRow)
- );
- System.Diagnostics.Debug.WriteLine
- (
- String.Format("\nПравая колонка : {0}",
- cr.RightColumn)
- );
- }
- tr.Commit();
- }
- }
- }
Источник: 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