using DevExpress.XtraEditors;
|
using System;
|
using System.Collections.Generic;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFrmUI.Curve
|
{
|
/// <summary>
|
/// 通过Excel导入曲线
|
/// </summary>
|
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<CurrentViewModel> _allBindingList;
|
public Action<string, Model.eCurveSourceFrom, Model.FeatCurveExpressGroup> ReloadDataEvent;
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
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<CurrentViewModel>();
|
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<Model.CurvePoint>();
|
var points_qe = new List<Model.CurvePoint>();
|
var points_qp = new List<Model.CurvePoint>();
|
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();
|
}
|
|
|
}
|
}
|