void miDelete_Click(object sender, EventArgs e) { LocalVariable lv = this.ClassPointer as LocalVariable; List <IAction> acts = lv.RootPointer.GetRelatedActions(lv.MemberId); bool bOK = (acts.Count == 0); if (bOK) { MethodDesignerHolder mdh = MethodViewer; if (mdh != null) { BranchList bl = mdh.ActionList; if (bl != null) { Dictionary <UInt32, IAction> actions = new Dictionary <uint, IAction>(); bl.GetActionsUseLocalVariable(lv.MemberId, actions); if (actions.Count > 0) { foreach (KeyValuePair <UInt32, IAction> kv in actions) { acts.Add(kv.Value); } bOK = false; } } } } if (!bOK) { List <ObjectTextID> objs = new List <ObjectTextID>(); foreach (IAction a in acts) { objs.Add(new ObjectTextID("Action", "", a.Display)); } dlgObjectUsage dlg = new dlgObjectUsage(); dlg.LoadData("There are actions using this object. These actions must be removed before this object can be removed.", "Remove object", objs); //currently no OK will be returned bOK = (dlg.ShowDialog(this.FindForm()) == DialogResult.OK); if (bOK) { IList <MethodDiagramViewer> l = MethodViewer.GetViewer(); foreach (MethodDiagramViewer mv in l) { //remove local/constructor actions belong to it List <IComponent> avList = new List <IComponent>(); for (int i = 0; i < mv.Controls.Count; i++) { ActionViewer av = mv.Controls[i] as ActionViewer; if (av != null) { foreach (IAction a in acts) { if (av.ActionObject.ContainsActionId(a.ActionId)) { avList.Add(av); } } } } if (avList.Count > 0) { mv.DeleteComponents(avList.ToArray()); } } } } if (bOK) { MethodViewer.RemoveLocalVariable(this); RemoveLabel(); Control p = this.Parent; if (p != null) { p.Controls.Remove(this); } MethodViewer.Changed = true; } }