public void ChangeBus(string Name) { if (BusModule != null) { if (BusModule.Name != Name && MessageBox.Show("Do you want to change bus type?", "Question", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { this.Controls.Remove(BusModule); } else { return; } } Enum.TryParse(Name, out EnumBusType BusType); BusModule = new BusModel(BusType, new Point(100, this.Height / 2 + 100)); this.Controls.Add(BusModule); BusModule.BringToFront(); BusModule.OnModleDelete += UserControl1_OnModleDelete; BusModule.ControlMoveEvent += BusModule_ControlMoveEvent; BusModule_ControlMoveEvent(new object(), new ControlMoveEventArgs("")); OnProductChangedEvent?.Invoke(this, new ModuleAddedArgs() { IsAdd = true, Module = BusModule }); }
/// <summary> /// Middle——》Left /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void panel_Product_DragDrop(object sender, DragEventArgs e) { Point point = this.PointToClient(new Point(e.X, e.Y)); object info = e.Data.GetData(typeof(string)); List <string> ControlNameList = new List <string>(); foreach (Control it in this.Controls) { if ((it as SubBusModel) != null) { ControlNameList.Add((it as SubBusModel).Name); } } if (info.ToString().Contains("HL")) //子模块 { if (BusModule == null) { MessageBox.Show("Please add a bus first!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } var ExistCount = ControlNameList.Where(c => c.Contains(info.ToString())).Count(); EnumDeviceName subBusModelType = (EnumDeviceName)Enum.Parse(typeof(EnumDeviceName), info.ToString().Substring(0, 6)); SubBusModel SubBusModule = new SubBusModel(point, subBusModelType, ExistCount + 1, ControlNameList.Count + 1); SubBusModule.OnModleDelete += UserControl1_OnModleDelete; this.Controls.Add(SubBusModule); SubBusModule.BringToFront(); SubBusModule.ControlMoveEvent += BusModule_ControlMoveEvent; BusModule_ControlMoveEvent(new object(), new ControlMoveEventArgs("")); OnProductChangedEvent?.Invoke(this, new ModuleAddedArgs() { Module = SubBusModule, IsAdd = true }); } else //总线 { ChangeBus(info.ToString()); } }
/// <summary> /// Middle->Left /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UserControl1_OnModleDelete(object sender, EventArgs e) { if (sender is BusModel) { if (MessageBox.Show("You will delete all the submodules, do you want to delelte all submodules?", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { List <ControlBase> ModuleList = new List <ControlBase>(); BusModule = null; foreach (var it in this.Controls) { if (it is ControlBase) { ModuleList.Add(it as ControlBase); } } foreach (var it in ModuleList) { it.Dispose(); } BusModule_ControlMoveEvent(new object(), new ControlMoveEventArgs("")); OnProductChangedEvent?.Invoke(this, new ModuleAddedArgs() { IsAdd = false, Module = sender as ControlBase }); } } else { OnProductChangedEvent?.Invoke(this, new ModuleAddedArgs() { IsAdd = false, Module = sender as ControlBase }); (sender as ControlBase).Dispose(); BusModule_ControlMoveEvent(new object(), new ControlMoveEventArgs("")); } }