Tengo un BaseTool
para AX_MapControl y AX_PageLayoutControl que permite dibujar una polilínea mediante IRubberBand
. Pero una vez iniciada la goma, no se puede cancelar, por ejemplo, pulsando escape. He encontrado ITrackCancel
pero lamentablemente no hay manera de utilizarlo correctamente.
ITrackCancel2 esc = new CancelTrackerClass();
esc.CancelOnKeyPress = true;
esc.Reset();
IRubberBand2 rubberBand = new RubberLineClass();
IGeometry geometry = rubberBand.TrackNew(screenDisplay, null);
IPolyline polyline = (IPolyline)geometry;
¿Cómo puedo utilizar ITrackCancel para cancelar el seguimiento de la banda elástica?
Actualización: ITrackCancel puede ser recuperado desde IScreenDisplay
pero mi m_hookHelper.ActiveView.ScreenDisplay.CancelTracker
es nulo. Utilizo la herramienta con AX_MapControl
y AX_PageLayoutControl
.
Actualización 2: Descubrí, que incluso Esris posee herramientas como esriControls.ControlsNewLineTool
no se puede cancelar con escape en mi aplicación. Tal vez hay un fallo más profundo en alguna parte. Voy a profundizar en ello...
Actualización 3 (Solución): Hay un fallo en mi aplicación WPF. Parece, que al inicio no llegan eventos de teclas al MapControl hasta que no cambie el tamaño de la ventana una vez. Así que esto no es un problema con ITrackCancel
sino con la interacción entre WPF y ArcEngine. Gracias de todos modos por su ayuda.