using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.Windows.Forms; namespace IStation.WinFrmUI.Curve { /// /// 通过Excel导入曲线 /// public partial class ImportCurveByExcelTemplateDlg : XtraForm { public ImportCurveByExcelTemplateDlg() { InitializeComponent(); } #region 页面类 public class CurrentViewModel : Model.GroupPoint { public CurrentViewModel() { } public CurrentViewModel(Model.GroupPoint rhs) : base(rhs) { } private double Round_Small(double value, int num, double small = 2.0) { if (value < small) value = Math.Round(value, 3); else value = Math.Round(value, num); return value; } } #endregion private List _allBindingList; public Action ReloadDataEvent; /// /// 绑定数据 /// public void SetBindingData(string curveCode = "", double ratedSeed = 0) { this.CurveCodeTextEdit.EditValue = curveCode; this.RatedSeedTextEdit.EditValue = ratedSeed; this.SourceFromImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveSourceFrom), false); this.SourceFromImageComboBoxEdit.SelectedIndex = 0; this.QHCurveFitTypeImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveFitType), false); this.QHCurveFitTypeImageComboBoxEdit.SelectedIndex = 0; this.QECurveFitTypeImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveFitType), false); this.QECurveFitTypeImageComboBoxEdit.SelectedIndex = 0; this.QPCurveFitTypeImageComboBoxEdit.Properties.AddEnum(typeof(Model.eCurveFitType), false); this.QPCurveFitTypeImageComboBoxEdit.SelectedIndex = 0; } //选择文件 private void ExcelBtnEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { var dlg = new System.Windows.Forms.OpenFileDialog(); dlg.Filter = "EXCEL 文件(*.xls)|*.xls"; dlg.CheckFileExists = true; if (dlg.ShowDialog() != DialogResult.OK) return; this.ExcelBtnEdit.Text = dlg.FileName; var list = CurveExpressFileHelper.ImportByExcel(dlg.FileName, out string msg); if (list == null) { XtraMessageBox.Show(msg); return; } _allBindingList = new List(); list.ForEach(x => _allBindingList.Add(new CurrentViewModel(x))); this.bindingSource1.DataSource = _allBindingList; } //验证 private bool Valid() { this.dxErrorProvider1.ClearErrors(); if (string.IsNullOrEmpty(this.CurveCodeTextEdit.Text.Trim())) { this.dxErrorProvider1.SetError(this.CurveCodeTextEdit, "必填项"); return false; } if (string.IsNullOrEmpty(this.SourceFromImageComboBoxEdit.Text.Trim())) { this.dxErrorProvider1.SetError(this.SourceFromImageComboBoxEdit, "必选项"); return false; } if (string.IsNullOrEmpty(this.QHCurveFitTypeImageComboBoxEdit.Text.Trim())) { this.dxErrorProvider1.SetError(this.QHCurveFitTypeImageComboBoxEdit, "必选项"); return false; } if (string.IsNullOrEmpty(this.RatedSeedTextEdit.Text.Trim())) { this.dxErrorProvider1.SetError(this.RatedSeedTextEdit, "必填项"); return false; } if (_allBindingList == null || _allBindingList.Count < 1) { XtraMessageBox.Show("无数据!"); return false; } return true; } //确定 private void btnOK_Click(object sender, EventArgs e) { if (!Valid()) return; var curveCode = this.CurveCodeTextEdit.Text.Trim(); var sourceFrom = (Model.eCurveSourceFrom)this.SourceFromImageComboBoxEdit.EditValue; var qhFitType = (Model.eCurveFitType)this.QHCurveFitTypeImageComboBoxEdit.EditValue; var qeFitType = (Model.eCurveFitType)this.QECurveFitTypeImageComboBoxEdit.EditValue; var qpFitType = (Model.eCurveFitType)this.QPCurveFitTypeImageComboBoxEdit.EditValue; var points_qh = new List(); var points_qe = new List(); var points_qp = new List(); for (int i = 0; i < _allBindingList.Count; i++) { var model = _allBindingList[i]; if (model.H > 0) points_qh.Add(new Model.CurvePoint() { X = model.Q, Y = model.H }); if (model.E >= 0) points_qe.Add(new Model.CurvePoint() { X = model.Q, Y = model.E }); if (model.P > 0) points_qp.Add(new Model.CurvePoint() { X = model.Q, Y = model.P }); } var curve = new Model.FeatCurveExpressGroup(); curve.CurveQH = new Model.CurveExpress(points_qh, qhFitType); curve.CurveQE = new Model.CurveExpress(points_qe, qeFitType); curve.CurveQP = new Model.CurveExpress(points_qp, qpFitType); this.ReloadDataEvent?.Invoke(curveCode, sourceFrom, curve); this.DialogResult = DialogResult.OK; this.Close(); } } }