namespace Yw.WinFrmUI.Phart { public partial class PumpVariableSpeedInfoCtrl : DevExpress.XtraEditors.XtraUserControl { public PumpVariableSpeedInfoCtrl() { InitializeComponent(); this.gridView1.SetNormalEditView(); 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; } /// /// 设置曲线 /// public event Action SetEvent; /// /// 设置曲线信息 /// public event Action SetInfoEvent; /// /// 设置设计点 /// public event Action SetDesignPointEvent; private List _all_binding_list = null; public void SetBindingData(List vm_list, Yw.Geometry.Point2d design_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 = design_pt?.X; this.txtDesignH.EditValue = design_pt?.Y; this.pumpSerialParallelInfoViewModelBindingSource.DataSource = _all_binding_list; this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false); this.gridView1.BestFitColumns(); } public void SetDesignPoint(Yw.Geometry.Point2d design_pt = null) { this.txtDesignQ.EditValue = design_pt?.X; this.txtDesignH.EditValue = design_pt?.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.Name, vm.Color); } private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) { //if (this.gridView1.FocusedColumn != this.colName) //{ // var vm = this.gridView1.GetFocusedRow() as PumpVariableSpeedInfoViewModel; // if (string.IsNullOrEmpty(vm.Name)) // { // e.Cancel = true; // } //} //if (this.gridView1.FocusedColumn == this.colCurrentHz) //{ // var vm = this.gridView1.GetFocusedRow() as PumpVariableSpeedInfoViewModel; // if (vm.CurrentHz < 10 || vm.CurrentHz > 50) // { // e.Cancel = true; // } //} //else if (this.gridView1.FocusedColumn == this.colExtendRatio) //{ // var vm = this.gridView1.GetFocusedRow() as PumpVariableSpeedInfoViewModel; // if (vm.ExtendRatio<80|| vm.ExtendRatio>150) // { // e.Cancel = true; // } //} } //值变换 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.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.QhCalc, vm.QeCalc, vm.QpCalc); } } /// /// 设置查询信息 /// /// /// public void SetQueryInfo(string id, PumpGroupPt 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); } public List GetList() { if (_all_binding_list == null || !_all_binding_list.Any()) { return default; } return _all_binding_list.Select(x => new PumpVariableSpeedInfoViewModel(x)).ToList(); } } }