ThinkGeo.com    |     Documentation    |     Premium Support

Cancel tracking with esc key

I have been through the samples for desktopedition for cancelling tracking using the esc key.  It may be just my application for some reason, but using either PreviewKeyDown or KeyDown methods I am not able to capture the esc OR the enter keys.  Almost all other keys are captured using those event handlers.  Does anyone know how, in WPF and WPFDesktopEdition to capture the esc or enter keys?  


I try to capture both on the map level and the window level:


On WindowLoaded:


                myMap.PreviewKeyDown += new KeyEventHandler(myMap_PreviewKeyDown);

                this.PreviewKeyDown += new KeyEventHandler(MapGIS_PreviewKeyDown);


 


        void MapGIS_PreviewKeyDown(object sender, KeyEventArgs e)

        {

            throw new NotImplementedException();

        }

        void myMap_PreviewKeyDown(object sender, KeyEventArgs e)

        {

            throw new NotImplementedException();

        }



Hi Jake, 
  
 Did you try to set focus on the map? Just call Map1.Focus() on the Loaded event of the map and try again. It works on my box. 
  
 Thanks, 
 Howard

I have tried that, I can capture most keys using that, but my “esc” “enter” and arrow keys are not captured.  They don’t trigger the event, even using the previewkeydown.

Hi Jake,
 
We’ve made a small sample which worked fine.
We noticed that if we click somewhere (like a button) on the window other than the map, the map will lose focus and the next time we press a key, the map won’t capture it. So we set focus on the map every time it’s clicked; now it’s working just fine.
 
Here is a piece of code that might be of help:
public Window1()
{
    InitializeComponent();

    map.Overlays.Add(new WorldMapKitWmsWpfOverlay());

    map.KeyDown += new KeyEventHandler(map_KeyDown);

    map.MapClick += new System.EventHandler<MapClickWpfMapEventArgs>(map_MapClick);
}

private void map_MapClick(object sender, MapClickWpfMapEventArgs e)
{
    map.Focus();
}

private void map_KeyDown(object sender, KeyEventArgs e)
{
    MessageBox.Show(e.Key.ToString());
}

Please let us know if this works for you.
 
Regards,
Tsui