namespace Yw.WinFrmUI.Phart { public partial class PumpVariableSpeedInfoCtrl : DevExpress.XtraEditors.XtraUserControl { public PumpVariableSpeedInfoCtrl() { InitializeComponent(); this.gridView1.SetNormalEditView(); this.gridView2.SetNormalView(); this.repColor.ColorChanged += RepColor_ColorChanged; this.repColor.ColorAlignment = DevExpress.Utils.HorzAlignment.Center; this.repColor.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor; this.repColor.ButtonsStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; this.colName.OptionsColumn.AllowEdit = false; this.colName.OptionsColumn.ReadOnly = true; this.colName.MinWidth = 150; this.colExtendRatio.Visible = false; } /// /// 设置曲线 /// public event Action SetEvent; /// /// 设置曲线信息 /// public event Action SetInfoEvent1; /// /// 设置曲线信息 /// public event Action SetInfoEvent; /// /// 设置装置点 /// public event Action SetDesignPointEvent; private List _all_binding_list = null; public void SetBindingData(PumpVariableSpeedInfoViewModel item, Yw.Geometry.Point2d equip_pt = null) { _all_binding_list = new List(); if (item != null) { _all_binding_list.Add(item); } this.txtDesignQ.EditValue = equip_pt?.X; this.txtDesignH.EditValue = equip_pt?.Y; this.pumpSerialParallelInfoViewModelBindingSource.DataSource = _all_binding_list; this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false); this.gridView1.BestFitColumns(); } public void SetBindingData(List vm_list, Yw.Geometry.Point2d equip_pt = null) { _all_binding_list = new List(); if (vm_list != null && vm_list.Any()) { for (int i = 0; i < vm_list.Count; i++) { var item = vm_list[i]; var vm = new PumpVariableSpeedInfoViewModel(); vm.Id = item.Id; vm.Name = item.Name; vm.Color = item.Color; vm.IsBp = item.IsBp; vm.RatedSpeed = item.RatedSpeed; vm.CurrentSpeed = item.CurrentSpeed; vm.CurrentHz = Math.Round(item.CurrentSpeed / item.RatedSpeed * 50, 2); vm.Qh = new Geometry.CubicSpline2d(item.Qh); vm.Qe = new Geometry.CubicSpline2d(item.Qe); vm.Qp = new Geometry.CubicSpline2d(item.Qp); vm.ExtendRatio = 100; vm.Calc(); _all_binding_list.Add(vm); } } this.txtDesignQ.EditValue = equip_pt?.X; this.txtDesignH.EditValue = equip_pt?.Y; this.pumpSerialParallelInfoViewModelBindingSource.DataSource = _all_binding_list; this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false); this.gridView1.BestFitColumns(); } public void Add(PumpVariableSpeedInfoViewModel vm) { if (_all_binding_list == null) _all_binding_list = new List(); _all_binding_list.Add(vm); this.pumpSerialParallelInfoViewModelBindingSource.DataSource = _all_binding_list; this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false); this.gridView1.BestFitColumns(); } public void SetSectPoint(List vm_list) { var pt_vm_list = new List(); if (vm_list != null && vm_list.Any()) { foreach (var vm in vm_list) { var sect_pt = vm.SectPoint; var pt_vm = new PumpSectPointViewModel(); pt_vm.Id = vm.Id; pt_vm.Name = vm.Name; if (sect_pt != null) { pt_vm.QueryQ = $"{sect_pt.X:N1}"; pt_vm.QueryH = $"{sect_pt.Y:N1}"; if (vm.QeCalc != null) { pt_vm.QueryE = $"{vm.QeCalc.GetPointY(sect_pt.X):N1}"; } if (vm.QpCalc != null) { pt_vm.QueryP = $"{vm.QpCalc.GetPointY(sect_pt.X):N1}"; } } pt_vm_list.Add(pt_vm); } } this.pumpSectPointViewModelBindingSource.DataSource = pt_vm_list; this.pumpSectPointViewModelBindingSource.ResetBindings(false); this.gridView2.BestFitColumns(); } /// /// 获取列表 /// public List GetList() { if (_all_binding_list == null || !_all_binding_list.Any()) { return default; } return _all_binding_list.Select(x => new PumpVariableSpeedInfoViewModel(x)).ToList(); } /// /// 获取 /// public Yw.Geometry.Point2d GetDesignPoint() { if (!double.TryParse(this.txtDesignQ.Text, out double x)) { return default; } if (!double.TryParse(this.txtDesignH.Text, out double y)) { return default; } return new Geometry.Point2d(x, y); } #region Color private List _color_array = new List() { Color.Red, Color.Blue, Color.Green,Color.DodgerBlue, Color.Fuchsia, Color.MidnightBlue, Color.Maroon, Color.Aquamarine, Color.Bisque,Color.BurlyWood }; /// /// 获取随机颜色 /// /// private Color GetRandomColor(int count) { if (count < _color_array.Count) { return _color_array[count]; } var _random = new Random(); int r = _random.Next(1, 256); int g = _random.Next(1, 256); int b = _random.Next(1, 256); return Color.FromArgb(r, g, b); } #endregion //颜色变换 private void RepColor_ColorChanged(object sender, EventArgs e) { if (this.gridView1.GetCurrentViewModel(_all_binding_list) is not PumpVariableSpeedInfoViewModel vm) return; vm.Color = (sender as DevExpress.XtraEditors.ColorEdit).Color; this.SetInfoEvent?.Invoke(vm.Id, vm.Color); } //值变换 private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { //if (e.Column == this.colName) //{ // var vm = this.gridView1.GetRow(e.RowHandle) as PumpVariableSpeedInfoViewModel; // this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color); //} //else if (e.Column == this.colCurrentHz) { var vm = this.gridView1.GetRow(e.RowHandle) as PumpVariableSpeedInfoViewModel; if (vm.CurrentHz < 10 || vm.CurrentHz > 50) { return; } vm.Calc(); this.SetEvent?.Invoke(vm.Id, vm.CurrentHz, vm.ExtendRatio, vm.QhCalc, vm.QeCalc, vm.QpCalc); } else if (e.Column == this.colExtendRatio) { var vm = this.gridView1.GetRow(e.RowHandle) as PumpVariableSpeedInfoViewModel; vm.Calc(); this.SetEvent?.Invoke(vm.Id, vm.CurrentHz, vm.ExtendRatio, vm.QhCalc, vm.QeCalc, vm.QpCalc); } } /// /// 设置查询信息 /// /// /// public void SetQueryInfo(string id, PumpQueryPointViewModel query_pt) { if (query_pt == null) return; if (_all_binding_list == null || !_all_binding_list.Any()) return; var vm = _all_binding_list.Find(x => x.Id == id); if (vm == null) return; vm.QueryQ = query_pt.Q > 0 ? $"{query_pt.Q:N1}" : string.Empty; vm.QueryH = query_pt.H > 0 ? $"{query_pt.H:N1}" : string.Empty; vm.QueryE = query_pt.E > 0 ? $"{query_pt.E:N1}" : string.Empty; vm.QueryP = query_pt.P > 0 ? $"{query_pt.P:N1}" : string.Empty; this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false); } //设置装置点 private void btnSetDesignPoint_Click(object sender, EventArgs e) { if (!double.TryParse(this.txtDesignQ.Text, out double design_q)) return; if (!double.TryParse(this.txtDesignH.Text, out double design_h)) return; this.SetDesignPointEvent?.Invoke(design_q, design_h); } } }