using DevExpress.Utils; namespace HStation.WinFrmUI { public partial class HomeXhsProjectTreeListCtrl : DevExpress.XtraEditors.XtraUserControl { public HomeXhsProjectTreeListCtrl() { InitializeComponent(); this.treeList1.InitialDefaultSettings(); this.treeList1.BorderStyle = BorderStyles.NoBorder; this.layoutControl1.SetupLayoutControl(); } /// /// 选择项目事件 /// public event Action SelectProjectEvent; /// /// 刷新数据事件 /// public event Action RefreshDataEvent; public event Action JumpDirectEvent; /// /// 项目导入完成事件 /// public event Action ImportProjectCompletedEvent; private List _allBindingList = new(); /// /// 绑定数据 /// public async void SetBindingData(List allProjectList) { _allBindingList = new List(); if (allProjectList != null) { foreach (var item in allProjectList) { if (await IsHaveBimFace(item.ID)) { var vm = new HomeXhsProjectTreeViewModel(item, true); _allBindingList.Add(vm); } else { var vm = new HomeXhsProjectTreeViewModel(item, false); _allBindingList.Add(vm); } } } this.treeList1.DataSource = _allBindingList; this.treeList1.ForceInitialize(); this.treeList1.ExpandAll(); } //查找项目是否存在模型 private async Task IsHaveBimFace(long ProjectID) { var projectSite = await BLLFactory.Instance.GetDefaultByProjectID(ProjectID); if (projectSite == null) { return false; } var relation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, Yw.Bimface.Purpose.Simulation); if (relation == null) { return false; } var bimfaceFile = await BLLFactory.Instance.GetByID(relation.BimfaceFileID); if (bimfaceFile == null) { return false; } return true; } /// /// 设置默认 /// public void SetFocused() { if (_allBindingList == null) { return; } var vm = _allBindingList.FirstOrDefault(); if (vm != null) { this.treeList1.FocusedNode = this.treeList1.FindNodeByKeyID(vm.ID); } } /// /// 设置聚焦 /// public void SetFocused(long ID) { if (_allBindingList == null) { return; } this.treeList1.FocusedNode = this.treeList1.FindNodeByKeyID(ID); } //全部展开 private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.ExpandAll(); } //全部折叠 private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.CollapseAll(); } //检索(menu) private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.layoutControlItem1.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always) this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; else this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; } //树线 private void barCkTreeLine_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.OptionsView.ShowTreeLines = this.barCkTreeLine.Checked ? DefaultBoolean.True : DefaultBoolean.False; } //聚焦节点改变 private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e) { var vm = this.treeList1.GetDataRecordByNode(e.Node) as HomeXhsProjectTreeViewModel; this.SelectProjectEvent?.Invoke(vm.Project); } //导入项目 private void btnImportProject_Click(object sender, EventArgs e) { var dlg = new ImportXhsProjectDlg(); dlg.SetBindingData(); if (dlg.ShowDialog() == DialogResult.OK) { this.ImportProjectCompletedEvent?.Invoke(dlg.ViewModel); } } //刷新 private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.RefreshDataEvent?.Invoke(); } //双击事件 private void treeList1_DoubleClick(object sender, EventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { return; } JumpDirectEvent.Invoke(vm.Project.ID); } } }