lixiaojun
2024-09-20 6877b745b5cf3d2b2d65ff4b740fb1dab8167a5a
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/HydroParterPropertyCtrl.cs
@@ -6,6 +6,8 @@
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraLayout.Utils;
using DevExpress.XtraVerticalGrid.Events;
using NetTaste;
using System.Windows.Forms.VisualStyles;
namespace Yw.WinFrmUI
{
@@ -20,24 +22,25 @@
        }
        /// <summary>
        /// 获取水力信息事件
        /// </summary>
        public event Func<Yw.Model.HydroModelInfo> GetHydroInfoEvent;
        /// <summary>
        /// 选择曲线事件
        /// </summary>
        public event Action<HydroParterPropertyViewModel, string> SelectCurveEvent;
        public event Func<HydroParterPropertyViewModel, string, bool> SelectCurveEvent;
        /// <summary>
        /// 选择模式事件
        /// </summary>
        public event Action<HydroParterPropertyViewModel, string> SelectPatternEvent;
        public event Func<HydroParterPropertyViewModel, string, bool> SelectPatternEvent;
        /// <summary>
        /// 属性值正在改变事件
        /// </summary>
        public event Action<HydroParterPropertyViewModel> PropertyValueChangingEvent;
        public event Func<HydroParterPropertyViewModel, bool> PropertyValueChangingEvent;
        /// <summary>
        /// 属性值发生改变事件
        /// </summary>
        public event Action<HydroParterPropertyViewModel> PropertyValueChangedEvent;
        public event Func<HydroParterPropertyViewModel, bool> PropertyValueChangedEvent;
        /// <summary>
        /// 绑定对象
@@ -55,17 +58,24 @@
            }
        }
        /// <summary>
        /// 绑定对象列表
        /// </summary>
        public List<HydroParterPropertyViewModel> SelectedObjects
        {
            get { return this.propertyGridControl1.SelectedObjects?.Select(x => x as HydroParterPropertyViewModel).ToList(); }
            set
            {
                this.propertyGridControl1.SelectedObjects = value?.ToArray();
                OnChanged();
            }
        }
        //改变触发
        protected virtual void OnChanged()
        {
            if (this.SelectedObject == null)
            {
            }
            else
            {
            }
        }
        /// <summary>
@@ -248,7 +258,56 @@
                buttonEdit.ButtonClick += delegate
                {
                    var vm = GetPropertyViewModel(e.Row);
                    this.SelectCurveEvent?.Invoke(vm, curvePro.CurveType);
                    if (this.SelectCurveEvent == null || !this.SelectCurveEvent.Invoke(vm, curvePro.CurveType))
                    {
                        var hydroInfo = GetHydroInfoEvent?.Invoke();
                        if (hydroInfo == null)
                        {
                            return;
                        }
                        switch (curvePro.CurveType)
                        {
                            case HydroCurve.Pump:
                                {
                                }
                                break;
                            case HydroCurve.PumpQH:
                                {
                                    var vmPump = vm as HydroPumpPropertyViewModel;
                                    var curveQh = hydroInfo.Curves?.Find(x => x.Code == vmPump.CurveQH);
                                    var curvePts = curveQh?.CurveData?.Select(x => new HydroCurvePointViewModel(x.X, x.Y)).ToList();
                                    var dlg = new HydroCurveViewDlg();
                                    dlg.Text = $"{vm.Name}-流量扬程曲线";
                                    dlg.TitleTextX = "流量(m³/h)";
                                    dlg.TitleTextY = "扬程(m)";
                                    dlg.SetBindingData(curvePts);
                                    dlg.ShowDialog();
                                }
                                break;
                            case HydroCurve.PumpQP:
                                {
                                }
                                break;
                            case HydroCurve.PumpQE:
                                {
                                }
                                break;
                            case HydroCurve.Valve:
                                {
                                }
                                break;
                            case HydroCurve.ValveQL:
                                {
                                }
                                break;
                            default: break;
                        }
                    }
                };
                e.RepositoryItem = buttonEdit;
            }
@@ -291,6 +350,21 @@
            var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
            var propertyViewModel = GetPropertyViewModel(e.Row);
            this.PropertyValueChangedEvent?.Invoke(propertyViewModel);
            if (this.PropertyValueChangedEvent == null || !this.PropertyValueChangedEvent.Invoke(propertyViewModel))
            {
                var hydroInfo = GetHydroInfoEvent?.Invoke();
                if (hydroInfo == null)
                {
                    return;
                }
                var allParterList = hydroInfo.GetAllParters();
                var parter = allParterList?.Find(x => x.ID == propertyViewModel.ID);
                if (parter == null)
                {
                    return;
                }
                parter.UpdateProperty(allParterList, propertyViewModel);
            }
            UpdateRows();
        }