public override void Run(LegendCommand command) { Shapefile sf = null; var layer = _legend.Layers.ItemByHandle(LayerHandle); if (layer != null) { sf = layer.GetObject() as Shapefile; } switch (command) { case LegendCommand.CalculateArea: break; case LegendCommand.RemoveLayer: LayerHelper.RemoveLayer(); break; case LegendCommand.LoadLayerStyle: LayerHelper.LoadLayerStyle(); break; case LegendCommand.SaveLayerStyle: LayerHelper.SaveCurrentStyle(); break; //case LegendCommand.ImportOgrLayer: // LayerHelper.ImportOgrLayer(); // break; case LegendCommand.ZoomToLayer: _legend.Map.ZoomToLayer(LayerHandle); break; case LegendCommand.Labels: { using (Form form = new LabelStyleForm(_legend, sf, LayerHandle)) { form.ShowDialog(MainForm.Instance); _legend.Refresh(); } } break; case LegendCommand.Properties: LayerHelper.ShowLayerProperties(LayerHandle); break; } }
/// <summary> /// 右键菜单移除项处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void removeItem_Click(object sender, EventArgs e) { int layerHandle = App.Legend.SelectedLayer; Node node = findNode(x => x.LegendHandle == layerHandle && x.NodeType == NodeType.layer); int parentGroupHandle = node.ParentGroupHandle; LayerHelper.RemoveLayer(); LegendNodes.Remove(node); //如果该组没有图层了,就移除该组 if (Legend.Groups[parentGroupHandle].LayerCount == 0) { Node groupNode = findNode(x => x.LegendHandle == parentGroupHandle && x.NodeType == NodeType.group); LegendNodes.Remove(groupNode); Legend.Groups.Remove(parentGroupHandle); } RefreshUI(); }