using DevExpress.Utils.Svg; using System.Collections.Concurrent; using Yw.Vmo; namespace HStation.WinFrmUI { public partial class SimulationFunctionCtrl : DevExpress.XtraEditors.XtraUserControl { public SimulationFunctionCtrl() { InitializeComponent(); this.layoutControl1.SetupLayoutControl(); } #region 项目事件 /// /// 显示项目站信息事件 /// public event Action ShowProjectSiteInfoEvent; /// /// 显示项目站模拟事件 /// public event Action, SvgImage> ShowProjectSiteSimulationEvent; #endregion #region 工况事件 /// /// 项目站工况增加事件 /// public event Action ProjectSiteWorkingAppendEvent; /// /// 项目站工况更新事件 /// public event Action ProjectSiteWorkingUpdateEvent; /// /// 项目站工况移除事件 /// public event Action ProjectSiteWorkingRemoveEvent; /// /// 项目站工况选择改变事件 /// public event Action ProjectSiteWorkingCheckedEvent; /// /// 项目站工况重载事件 /// public event Action> ProjectSiteWorkingReloadEvent; #endregion #region 方案事件 /// /// 创建项目站方案事件 /// public event Action, SvgImage> CreateProjectSiteSchemeEvent; /// /// 项目站方案增加事件 /// public event Action ProjectSiteSchemeAppendEvent; /// /// 项目站方案更新事件 /// public event Action ProjectSiteSchemeUpdateEvent; /// /// 项目站方案移除事件 /// public event Action ProjectSiteSchemeRemoveEvent; #endregion private XhsProjectVmo _project = null;//项目 private XhsProjectSiteVmo _projectSite = null;//项目站 private Yw.Model.HydroModelInfo _hydroInfo = null;//模型信息 private Dictionary _allWorkingCheckedListDict = null;//所有工况选择列表字典 private Dictionary _allSchemeHydroInfoDict = null;//所有方案水力信息列表 private Dictionary> _allSchemeWorkingCheckedListDict = null;//所有方案工况选择列表字典 private ConcurrentDictionary _gettingHydroInfoDict = new ConcurrentDictionary();//获取水力信息字典 /// /// 绑定数据 /// public async Task SetBindingData(XhsProjectVmo project) { if (project == null) { return; } _project = project; var overlay = this.ShowOverlay(); _projectSite = await BLLFactory.Instance.GetDefaultByProjectID(_project.ID); var relation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); if (relation == null) { return; } var allWorkingList = await BLLFactory.Instance.GetByModelID(relation.ModelID); allWorkingList?.ForEach(x => { AppendWorking(null, x); }); var allSchemeList = await BLLFactory.Instance.GetBySiteID(_projectSite.ID); allSchemeList?.ForEach(async x => { AppendScheme(x); var schemeRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, x.ID, HStation.Xhs.Purpose.Simulation); if (schemeRelation != null) { var allSchemeWorkingList = await BLLFactory.Instance.GetByModelID(schemeRelation.ModelID); allSchemeWorkingList?.ForEach(y => { AppendWorking(x, y); }); } }); await ShowInfo(); overlay.Close(); await Task.Delay(2000); this.accordionControl1.ExpandAll(); } //项目站概况 private async void elementProjectSiteInfo_Click(object sender, EventArgs e) { await ShowInfo(); } //项目站水力模拟 private async void elementProjectSiteSimulation_Click(object sender, EventArgs e) { if (_project == null) { return; } if (_projectSite == null) { return; } var hydroInfo = await GetHydroInfo(null, true); if (hydroInfo == null) { return; } this.ShowProjectSiteSimulationEvent?.Invoke(_project, _projectSite, null, hydroInfo, _allWorkingCheckedListDict, this.svgImg32[1]); } //创建项目站方案 private async void accordionControl1_ContextButtonClick(object sender, DevExpress.Utils.ContextItemClickEventArgs e) { if (_project == null) { return; } if (_projectSite == null) { return; } var element = e.DataItem as DevExpress.XtraBars.Navigation.AccordionControlElement; if (element != this.elementProjectSiteSchemeList) { return; } var hydroInfo = await GetHydroInfo(null, true); if (hydroInfo == null) { return; } var allSchemeList = _allSchemeHydroInfoDict?.Keys.ToList(); this.CreateProjectSiteSchemeEvent?.Invoke(_project, _projectSite, hydroInfo, allSchemeList, this.svgImg32[3]); } //右键弹出 private void accordionControl1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { this.popupMenu1.ShowPopup(MousePosition); } } //全部折叠 private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.accordionControl1.CollapseAll(); } //全部展开 private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.accordionControl1.ExpandAll(); } #region 通用方法 #region Model /// /// 获取模型 /// public async Task GetModel(XhsSchemeVmo scheme) { return await GetHydroInfo(scheme, true); } /// /// 刷新Model /// public async Task RefreshModel(XhsSchemeVmo scheme) { return await GetHydroInfo(scheme, false); } #endregion /// /// 获取水力信息 /// UseCache 是否使用缓存 /// public async Task GetHydroInfo(XhsSchemeVmo scheme, bool useCache) { Yw.Model.HydroModelInfo hydroInfo = null; if (!useCache) { if (hydroInfo == null) { hydroInfo = await GetHydroInfo(scheme); } if (hydroInfo == null) { return default; } } if (scheme == null) { if (hydroInfo == null) { if (_hydroInfo == null) { hydroInfo = await GetHydroInfo(null); if (hydroInfo == null) { return default; } if (_hydroInfo == null) { _hydroInfo = hydroInfo; } } return _hydroInfo; } _hydroInfo = hydroInfo; return _hydroInfo; } if (_allSchemeHydroInfoDict == null) { _allSchemeHydroInfoDict = new Dictionary(); } if (hydroInfo == null) { if (!_allSchemeHydroInfoDict.ContainsKey(scheme)) { hydroInfo = await GetHydroInfo(scheme); if (hydroInfo == null) { return default; } if (!_allSchemeHydroInfoDict.ContainsKey(scheme)) { _allSchemeHydroInfoDict.Add(scheme, hydroInfo); } } return _allSchemeHydroInfoDict[scheme]; } if (_allSchemeHydroInfoDict.ContainsKey(scheme)) { _allSchemeHydroInfoDict[scheme] = hydroInfo; } else { _allSchemeHydroInfoDict.Add(scheme, hydroInfo); } return _allSchemeHydroInfoDict[scheme]; } //获取水力信息 private async Task GetHydroInfo(XhsSchemeVmo scheme) { if (_project == null) { return default; } if (_projectSite == null) { return default; } string key = $"{_project.ID}-{_projectSite.ID}-{scheme?.ID}"; if (_gettingHydroInfoDict.TryGetValue(key, out bool getting)) { if (getting) { return default; } } WaitFormHelper.ShowWaitForm(this.FindForm(), "正在加载模型数据,请稍后..."); //var overlay = this.ShowOverlay(); if (!_gettingHydroInfoDict.TryAdd(key, true)) { _gettingHydroInfoDict[key] = true; } HydroModelRelationVmo relation = null; if (scheme == null) { relation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); } else { relation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation); } if (relation == null) { return default; } var hydroInfo = await BLLFactory.Instance.GetByID(relation.ModelID); _gettingHydroInfoDict[key] = false; //overlay.Close(); WaitFormHelper.HideWaitForm(); return hydroInfo; } /// /// 添加方案 /// 触发项目站方案增加事件 /// public void AppendScheme(XhsSchemeVmo scheme) { if (_project == null) { return; } if (_projectSite == null) { return; } if (scheme == null) { return; } var elementScheme = new DevExpress.XtraBars.Navigation.AccordionControlElement(); elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; elementScheme.Text = scheme.Name; elementScheme.Hint = scheme.Description; elementScheme.Tag = scheme; elementScheme.ImageOptions.ImageIndex = 3; elementScheme.Click += async (sender, e) => { var hydroInfo = await GetHydroInfo(scheme, true); if (hydroInfo == null) { return; } Dictionary dict = null; if (_allSchemeWorkingCheckedListDict != null) { if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme)) { dict = _allSchemeWorkingCheckedListDict[scheme]; } } this.ShowProjectSiteSimulationEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, dict, this.svgImg32[3]); }; this.elementProjectSiteSchemeList.Elements.Add(elementScheme); this.elementProjectSiteSchemeList.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; if (_allSchemeHydroInfoDict == null) { _allSchemeHydroInfoDict = new Dictionary(); } if (_allSchemeWorkingCheckedListDict == null) { _allSchemeWorkingCheckedListDict = new Dictionary>(); } if (!_allSchemeWorkingCheckedListDict.ContainsKey(scheme)) { _allSchemeWorkingCheckedListDict.Add(scheme, new Dictionary()); } this.ProjectSiteSchemeAppendEvent?.Invoke(_project, _projectSite, scheme); } /// /// 更新方案 /// 触发项目站方案更新事件 /// public void UpdateScheme(XhsSchemeVmo scheme) { if (_project == null) { return; } if (_projectSite == null) { return; } if (scheme == null) { return; } var elementScheme = this.elementProjectSiteSchemeList.Elements .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); if (elementScheme == null) { return; } elementScheme.Text = scheme.Name; elementScheme.Hint = scheme.Description; elementScheme.Tag = scheme; if (_allSchemeHydroInfoDict != null && _allSchemeHydroInfoDict.Count > 0) { var schemeKey = _allSchemeHydroInfoDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey != null) { var hydroInfoValue = _allSchemeHydroInfoDict[schemeKey]; _allSchemeHydroInfoDict.Remove(schemeKey); _allSchemeHydroInfoDict.Add(scheme, hydroInfoValue); } } if (_allSchemeWorkingCheckedListDict != null && _allSchemeWorkingCheckedListDict.Count > 0) { var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey != null) { var workingCheckedValue = _allSchemeWorkingCheckedListDict[schemeKey]; _allSchemeWorkingCheckedListDict.Remove(schemeKey); _allSchemeWorkingCheckedListDict.Add(scheme, workingCheckedValue); } } this.ProjectSiteSchemeUpdateEvent?.Invoke(_project, _projectSite, scheme); } /// /// 移除方案 /// public void RemoveScheme(XhsSchemeVmo scheme) { if (_project == null) { return; } if (_projectSite == null) { return; } if (scheme == null) { return; } var elementScheme = this.elementProjectSiteSchemeList.Elements .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); if (elementScheme == null) { return; } if (elementScheme.Elements != null && elementScheme.Elements.Count > 0) { var workingElementList = elementScheme.Elements.ToList(); foreach (var workingElement in workingElementList) { if (workingElement.HeaderControl != null) { this.accordionControl1.Controls.Remove(workingElement.HeaderControl); } elementScheme.Elements.Remove(workingElement); } } this.elementProjectSiteSchemeList.Elements.Remove(elementScheme); if (this.elementProjectSiteSchemeList.Elements.Count < 1) { this.elementProjectSiteSchemeList.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; } if (_allSchemeHydroInfoDict != null && _allSchemeHydroInfoDict.Count > 0) { var schemeKey = _allSchemeHydroInfoDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey != null) { _allSchemeHydroInfoDict.Remove(schemeKey); } } if (_allSchemeWorkingCheckedListDict != null && _allSchemeWorkingCheckedListDict.Count > 0) { var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey != null) { _allSchemeWorkingCheckedListDict.Remove(schemeKey); } } this.ProjectSiteSchemeRemoveEvent?.Invoke(_project, _projectSite, scheme); } /// /// 添加工况 /// 触发项目站工况增加事件 /// public void AppendWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) { if (_project == null) { return; } if (_projectSite == null) { return; } if (working == null) { return; } if (scheme == null) { var ckEdit = new CheckEdit(); ckEdit.Properties.AutoWidth = true; ckEdit.Properties.Caption = string.Empty; ckEdit.Checked = false; ckEdit.CheckedChanged += (sender, e) => { if (_allWorkingCheckedListDict != null) { if (_allWorkingCheckedListDict.ContainsKey(working)) { _allWorkingCheckedListDict[working] = ckEdit.Checked; } } this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, null, working, ckEdit.Checked); }; this.accordionControl1.Controls.Add(ckEdit); var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement(); elementWorking.HeaderControl = ckEdit; elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; elementWorking.Text = working.Name; elementWorking.Hint = working.Description; elementWorking.Tag = working; elementWorking.Click += (sender, e) => { }; this.elementProjectSiteSimulation.Elements.Add(elementWorking); this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; if (_allWorkingCheckedListDict == null) { _allWorkingCheckedListDict = new Dictionary(); } if (!_allWorkingCheckedListDict.ContainsKey(working)) { _allWorkingCheckedListDict.Add(working, false); } } else { var elementScheme = this.elementProjectSiteSchemeList.Elements .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); if (elementScheme == null) { return; } var ckEdit = new CheckEdit(); ckEdit.Properties.AutoWidth = true; ckEdit.Properties.Caption = string.Empty; ckEdit.Checked = false; ckEdit.CheckedChanged += (sender, e) => { if (_allSchemeWorkingCheckedListDict != null) { if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme)) { var workingCheckedDict = _allSchemeWorkingCheckedListDict[scheme]; if (workingCheckedDict.ContainsKey(working)) { workingCheckedDict[working] = ckEdit.Checked; } } } this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, scheme, working, ckEdit.Checked); }; this.accordionControl1.Controls.Add(ckEdit); var elementWorking = new DevExpress.XtraBars.Navigation.AccordionControlElement(); elementWorking.HeaderControl = ckEdit; elementWorking.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; elementWorking.Text = working.Name; elementWorking.Hint = working.Description; elementWorking.Tag = working; elementWorking.Click += (sender, e) => { }; elementScheme.Elements.Add(elementWorking); elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; if (_allSchemeWorkingCheckedListDict == null) { _allSchemeWorkingCheckedListDict = new Dictionary>(); } if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme)) { var workingCheckedDict = _allSchemeWorkingCheckedListDict[scheme]; if (workingCheckedDict != null) { if (!workingCheckedDict.ContainsKey(working)) { workingCheckedDict.Add(working, false); } } } } this.ProjectSiteWorkingAppendEvent?.Invoke(_project, _projectSite, scheme, working); } /// /// 更新工况 /// 更新,会触发更新事件 /// public void UpdateWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) { if (_project == null) { return; } if (_projectSite == null) { return; } if (working == null) { return; } if (scheme == null) { var element = this.elementProjectSiteSimulation.Elements. Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault(); if (element == null) { return; } element.Tag = working; element.Text = working.Name; element.Hint = working.Description; if (_allWorkingCheckedListDict != null) { var key = _allWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == working.ID); if (key != null) { var hasChecked = _allWorkingCheckedListDict[key]; _allWorkingCheckedListDict.Remove(key); _allWorkingCheckedListDict.Add(key, hasChecked); } } } else { var elementScheme = this.elementProjectSiteSchemeList.Elements .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); if (elementScheme == null) { return; } var element = elementScheme.Elements. Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault(); if (element == null) { return; } element.Tag = working; element.Text = working.Name; element.Hint = working.Description; if (_allSchemeWorkingCheckedListDict != null) { var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey != null) { var workingCheckedDict = _allSchemeWorkingCheckedListDict[schemeKey]; if (workingCheckedDict != null) { var workingKey = workingCheckedDict.Keys.FirstOrDefault(x => x.ID == working.ID); if (workingKey != null) { var hasChecked = workingCheckedDict[workingKey]; workingCheckedDict.Remove(workingKey); workingCheckedDict.Add(working, hasChecked); } } } } } this.ProjectSiteWorkingUpdateEvent?.Invoke(_project, _projectSite, scheme, working); } /// /// 移除工况 /// 移除,会触发移除事件 /// public void RemoveWorking(XhsSchemeVmo scheme, Yw.Vmo.HydroWorkingVmo working) { if (_project == null) { return; } if (_projectSite == null) { return; } if (working == null) { return; } if (scheme == null) { var element = this.elementProjectSiteSimulation.Elements. Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault(); if (element == null) { return; } if (element.HeaderControl != null) { this.accordionControl1.Controls.Remove(element.HeaderControl); } this.elementProjectSiteSimulation.Elements.Remove(element); if (this.elementProjectSiteSimulation.Elements.Count < 1) { this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; } if (_allWorkingCheckedListDict != null) { var key = _allWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == working.ID); if (key != null) { _allWorkingCheckedListDict.Remove(key); } } } else { var elementScheme = this.elementProjectSiteSchemeList.Elements .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); if (elementScheme == null) { return; } var element = elementScheme.Elements. Where(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == working.ID).FirstOrDefault(); if (element == null) { return; } if (element.HeaderControl != null) { this.accordionControl1.Controls.Remove(element.HeaderControl); } elementScheme.Elements.Remove(element); if (elementScheme.Elements.Count < 1) { elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; } if (_allSchemeWorkingCheckedListDict != null) { var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey != null) { var workingCheckedDict = _allSchemeWorkingCheckedListDict[schemeKey]; if (workingCheckedDict != null) { var workingKey = workingCheckedDict.Keys.FirstOrDefault(x => x.ID == working.ID); if (workingKey != null) { workingCheckedDict.Remove(workingKey); } } } } } this.ProjectSiteWorkingRemoveEvent?.Invoke(_project, _projectSite, scheme, working); } /// /// 重载工况 /// 重载,会触发重载事件 /// public void ReloadWorking(XhsSchemeVmo scheme, Dictionary dict) { if (_project == null) { return; } if (_projectSite == null) { return; } if (dict == null) { dict = new Dictionary(); } if (scheme == null) { var elements = this.elementProjectSiteSimulation.Elements.ToList(); //存在则更新,不存在则删除 foreach (var ele in elements) { var working = ele.Tag as HydroWorkingVmo; if (working != null) { if (ele.HeaderControl != null) { this.accordionControl1.Controls.Remove(ele.HeaderControl); } ele.HeaderControl = null; var key = dict.Keys.FirstOrDefault(x => x.ID == working.ID); if (key == null) { //移除element this.elementProjectSiteSimulation.Elements.Remove(ele); } else { var ckEdit = new CheckEdit(); ckEdit.Properties.AutoWidth = true; ckEdit.Properties.Caption = string.Empty; ckEdit.Checked = dict[key]; ckEdit.CheckedChanged += (sender, e) => { if (_allWorkingCheckedListDict != null) { if (_allWorkingCheckedListDict.ContainsKey(key)) { _allWorkingCheckedListDict[key] = ckEdit.Checked; } } this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, null, key, ckEdit.Checked); }; this.accordionControl1.Controls.Add(ckEdit); ele.HeaderControl = ckEdit; ele.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; ele.Text = key.Name; ele.Hint = key.Description; ele.Tag = key; ele.Click += (sender, e) => { }; } } } //不存在则增加 foreach (var item in dict) { var ele = elements.FirstOrDefault(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == item.Key.ID); if (ele == null) { //添加element //目前不存在添加的情况 } } if (this.elementProjectSiteSimulation.Elements.Count < 1) { this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; } else { this.elementProjectSiteSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; } _allWorkingCheckedListDict = dict; } else { var elementScheme = this.elementProjectSiteSchemeList.Elements .FirstOrDefault(x => (x.Tag is XhsSchemeVmo) && (x.Tag as XhsSchemeVmo).ID == scheme.ID); if (elementScheme == null) { return; } var elements = elementScheme.Elements.ToList(); //存在则更新,不存在则删除 foreach (var ele in elements) { var working = ele.Tag as HydroWorkingVmo; if (working != null) { if (ele.HeaderControl != null) { this.accordionControl1.Controls.Remove(ele.HeaderControl); } ele.HeaderControl = null; var key = dict.Keys.FirstOrDefault(x => x.ID == working.ID); if (key == null) { //移除element elementScheme.Elements.Remove(ele); } else { var ckEdit = new CheckEdit(); ckEdit.Properties.AutoWidth = true; ckEdit.Properties.Caption = string.Empty; ckEdit.Checked = dict[key]; ckEdit.CheckedChanged += (sender, e) => { if (_allSchemeWorkingCheckedListDict != null) { if (_allSchemeWorkingCheckedListDict.ContainsKey(scheme)) { var workingCheckedDict = _allSchemeWorkingCheckedListDict[scheme]; if (workingCheckedDict.ContainsKey(key)) { workingCheckedDict[key] = ckEdit.Checked; } } } this.ProjectSiteWorkingCheckedEvent?.Invoke(_project, _projectSite, scheme, key, ckEdit.Checked); }; this.accordionControl1.Controls.Add(ckEdit); ele.HeaderControl = ckEdit; ele.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; ele.Text = key.Name; ele.Hint = key.Description; ele.Tag = key; ele.Click += (sender, e) => { }; } } } //不存在增增加 foreach (var item in dict) { var ele = elements.FirstOrDefault(x => (x.Tag is HydroWorkingVmo) && (x.Tag as HydroWorkingVmo).ID == item.Key.ID); if (ele == null) { //添加element //目前不存在增加的情况 } } if (elementScheme.Elements.Count < 1) { elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; } else { elementScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; } if (_allSchemeWorkingCheckedListDict == null) { _allSchemeWorkingCheckedListDict = new Dictionary>(); } var schemeKey = _allSchemeWorkingCheckedListDict.Keys.FirstOrDefault(x => x.ID == scheme.ID); if (schemeKey == null) { _allSchemeWorkingCheckedListDict.Add(scheme, dict); } else { _allSchemeWorkingCheckedListDict[schemeKey] = dict; } } this.ProjectSiteWorkingReloadEvent?.Invoke(_project, _projectSite, scheme, dict); } //显示信息 private async Task ShowInfo() { if (_project == null) { return; } if (_projectSite == null) { return; } var hydroInfo = await GetHydroInfo(null, true); if (hydroInfo == null) { return; } this.ShowProjectSiteInfoEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[0]); } #endregion } }