using DevExpress.Utils.Extensions; using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; namespace IStation.WinFrmUI.Monitor { /// /// 设置校验点 /// public partial class SetCheckPointsDlg : XtraForm { public SetCheckPointsDlg() { InitializeComponent(); } public event Func, bool> ReloadDataEvent; private BindingList _bindingList = null; /// /// 绑定数据 /// public void Set(List checkPoints) { if (checkPoints != null && checkPoints.Any()) { _bindingList = new BindingList(checkPoints); } else { _bindingList = new BindingList(); } this.curveAnalyzePointBindingSource.DataSource = _bindingList; this.curveAnalyzePointBindingSource.ResetBindings(false); this.gridView1.BestFitColumns(); } //验证 public bool Valid() { this.gridView1.CloseEditor(); this.gridView1.UpdateCurrentRow(); if (_bindingList.Count > 0) { for (int i = 0; i < _bindingList.Count; i++) { var vm = _bindingList[i]; if (string.IsNullOrEmpty(vm.HZ.ToString())) { this.gridView1.FocusedRowHandle = i; this.gridView1.SetColumnError(this.colHz, "必填项"); return false; } if (string.IsNullOrEmpty(vm.Q.ToString())) { this.gridView1.FocusedRowHandle = i; this.gridView1.SetColumnError(this.colHz, "必填项"); return false; } } } return true; } #region GridView //删除 private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (_bindingList == null || _bindingList.Count < 1) return; if (e.Column == this.colDelete) { var row = this.gridView1.GetFocusedRow() as Model.CurveAnalyzePoint; if (row == null) return; _bindingList.Remove(row); } } //新增属性时必须先输入属性名 private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { if (_bindingList == null) { e.Cancel = true; return; } if (this.gridView1.FocusedColumn != this.colHz) { var row = this.gridView1.GetFocusedRow() as Model.CurveAnalyzePoint; if (row == null) { e.Cancel = true; return; } } } //验证名称的唯一性 private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (_bindingList == null || _bindingList.Count < 1) return; if (this.gridView1.FocusedColumn == this.colHz) { if (double.TryParse(e.Value.ToString(), out double value)) { if (value <= 0) { e.ErrorText = "小于或等于0"; e.Valid = false; } else if (value > 50) { e.ErrorText = "大于50"; e.Valid = false; } var row = this.gridView1.GetFocusedRow() as Model.CurveAnalyzePoint; var list = _bindingList.ToList(); list.Remove(row); if (list.Find(x => x.HZ == Convert.ToDouble(e.Value)) != null) { e.ErrorText = "重复"; e.Valid = false; } } } } #endregion private void btnOk_Click(object sender, EventArgs e) { if (!Valid()) return; var list = _bindingList?.ToList(); if (this.ReloadDataEvent != null) { var bol = this.ReloadDataEvent(list); if (!bol) { XtraMessageBox.Show("设置失败!"); return; } XtraMessageBox.Show("设置成功!"); } this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); } } }