protected override void OnKeyDown(KeyEventArgs e) { bool shouldRefresh = false; foreach (IMapTool tool in tools) { if (e.KeyCode == Keys.Escape) { tool.Cancel(); shouldRefresh = true; continue; } tool.OnKeyDown(e); } if ((e.KeyCode == Keys.Delete) && (!e.Handled)) { deleteTool.DeleteSelection(); shouldRefresh = true; } if (shouldRefresh) { Refresh(); } base.OnKeyDown(e); }
/// <summary> /// Handles the key pressed by the user /// </summary> /// <param name="e"></param> protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); var shouldRefresh = false; var canceled = false; foreach (var tool in tools) { if (e.KeyCode == Keys.Escape) { // if the user presses the escape key first cancel an operation in progress if (tool.IsBusy) { tool.Cancel(); shouldRefresh = true; canceled = true; } continue; } tool.OnKeyDown(e); } if ((!canceled) && (e.KeyCode == Keys.Escape) && (!SelectTool.IsActive)) { // if the user presses the escape key and there was no operation in progress switch to select. ActivateTool(SelectTool); shouldRefresh = true; } if ((e.KeyCode == Keys.Delete) && (!e.Handled)) { deleteTool.DeleteSelection(); shouldRefresh = true; } if (shouldRefresh) { Refresh(); } }
public void CanDeleteWithoutEditableObject() { MapControl mapControl = new MapControl(); SelectTool selectTool = mapControl.SelectTool; //mapControl.ActivateTool(selectTool); VectorLayer vectorLayer = new VectorLayer(); FeatureCollection layer2Data = new FeatureCollection(); vectorLayer.DataSource = layer2Data; layer2Data.FeatureType = typeof(Feature); layer2Data.Add(new Point(4, 5)); layer2Data.Add(new Point(0, 1)); mapControl.Map.Layers.Add(vectorLayer); selectTool.Select((IFeature)layer2Data.Features[0]); DeleteTool deleteTool = (DeleteTool)mapControl.GetToolByType(typeof(DeleteTool)); deleteTool.DeleteSelection(); }