Shuxia Ning
2025-01-17 a0bce3b366451b3ca94e676eb98dd7b415375c14
WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.cs
@@ -1,4 +1,6 @@
namespace Yw.WinFrmUI.Phart
using Yw.WinFrmUI.Phart;
namespace Yw.WinFrmUI.Phart
{
    public partial class UniversalChartExcelEditCtrl : DevExpress.XtraEditors.XtraUserControl
    {
@@ -8,15 +10,21 @@
            this.gridView1.SetDefaultEditView();
            this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            this.repImgCmbFeatType.Items.Add("穿过点", Yw.Ahart.eFeatType.Through, -1);
            this.repImgCmbFeatType.Items.Add("二次拟合", Yw.Ahart.eFeatType.Quadratic, -1);
            this.repImgCmbFeatType.Items.Add("三次拟合", Yw.Ahart.eFeatType.Cubic, -1);
            this.repImgCmbFeatType.Items.Add("四次拟合", Yw.Ahart.eFeatType.Quartic, -1);
            this.repImgCmbEditModel.Items.Add("鼠标", 0, -1);
            this.repImgCmbEditModel.Items.Add("键盘", 1, -1);
            this.repCmbEditModel.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            this.repImgCmbFeatType.Items.Add("三次拟合", Yw.Ahart.eFeatType.Cubic, -1);
            //this.repImgCmbFeatType.Items.Add("不拟合", Yw.Ahart.eFeatType.Through2d, -1);
            this.repImgCmbFeatType.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            this.universalEditChart1.DefinePointChangedEvent += UniversalEditChart1_DefinePointChangedEvent;
            this.universalEditChart1.SelectedPointIndexChangedEvent += (index) =>
            {
                this.gridView1.FocusedRowHandle = index;
            };
            this.Enabled = false;
        }
@@ -40,7 +48,7 @@
            _def_pt_list ??= new List<Geometry.Point2d>();
            SetChart(_feat_type, _def_pt_list);
            var (axis_x_title, axis_y_title) = AxisTitleHelper.Get(curve_type);
            var (axis_x_title, axis_y_title) = PhartAxisTitleHelper.Get(curve_type);
            this.colX.Caption = axis_x_title;
            this.colY.Caption = axis_y_title;
@@ -51,6 +59,7 @@
            this.barFeatType.EditValue = _feat_type;
            this.bindingSource1.DataSource = _def_pt_list;
            this.bindingSource1.ResetBindings(false);
            this.Enabled = true;
        }
@@ -71,7 +80,7 @@
                this.universalEditChart1.Clear();
                return;
            }
            var fit_pt_list = def_pt_list.GetFitPointList(feat_type);
            var fit_pt_list = def_pt_list.GetPointList(feat_type);
            this.universalEditChart1.SetBindingData(def_pt_list, fit_pt_list);
        }
@@ -109,6 +118,7 @@
            _def_pt_list.Add(new Geometry.Point2d(x, y));
            this.bindingSource1.ResetBindings(false);
            this.gridView1.FocusedRowHandle = _def_pt_list.Count - 1;
            SetChart(_feat_type, _def_pt_list);
        }
@@ -116,13 +126,56 @@
        //删除点
        private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_def_pt_list == null || !_def_pt_list.Any())
                return;
            var row = this.gridView1.GetCurrentViewModel(_def_pt_list);
            if (row == null)
                return;
            var count = _def_pt_list.Count - 1;
            var bol = PhartVerifyHelper.VerifyCount(_feat_type, count);
            if (!bol)
                return;
            _def_pt_list.Remove(row);
            this.bindingSource1.ResetBindings(false);
            SetChart(_feat_type, _def_pt_list);
        }
        //粘贴板覆盖
        private void barBtnPastePlateCovering_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!ClipboardCurveTextUIHelper.CopyDouble(out List<List<double?>> list))
                return;
            if (list == null || list.Count < 1)
                return;
            if (list.Count != 2)
            {
                TipFormHelper.ShowError("数据不完整");
                return;
            }
            var cell_count = list.Count;
            var min_row_count = list.Min(x => x.Count);
            var pt_list = new List<Yw.Geometry.Point2d>(min_row_count);
            for (int i = 0; i < min_row_count; i++)
            {
                var x = list[0][i];
                var y = list[1][i];
                if (x.HasValue && y.HasValue)
                {
                    pt_list.Add(new Geometry.Point2d(x.Value, y.Value));
                }
            }
            var bol = PhartVerifyHelper.VerifyCount(_feat_type, pt_list.Count);
            if (!bol)
                return;
            _def_pt_list.Clear();
            _def_pt_list.AddRange(pt_list);
            this.bindingSource1.ResetBindings(false);
            SetChart(_feat_type, _def_pt_list); 
        }
        /// <summary>
        /// 获取数据
@@ -136,7 +189,6 @@
            return true;
        }
    }
}