using DevExpress.Charts.Native; using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using PBS.Model; namespace PBS.WinFrmUI { public partial class EditElectricDlg : DevExpress.XtraEditors.XtraForm { public EditElectricDlg() { InitializeComponent(); } public event Func, bool> ReLoadDataevent; private BindingList _allBindingHour = null; public void SetBindingData(List elepriceHour) { if (elepriceHour == null) return; _allBindingHour = new BindingList(); if (elepriceHour != null && elepriceHour.Any()) { foreach (var item in elepriceHour) { var model = new Model.ElecPriceHourSetting(item); _allBindingHour.Add(model); } } this.bindingSource1.DataSource = _allBindingHour; } //验证 private bool Virify() { var AllHour = _allBindingHour; var hour = AllHour.OrderBy(x => x.EndHour).ToList(); var HourCount = hour.Count; if (hour.First().StartHour != 0 || hour.Last().EndHour != 24) { XtraMessageBox.Show("开始时间和结束时间有误"); return false; } for (int x = 0; x < hour.Count - 1; x++) { var frist = hour[x]; var second = hour[x + 1]; var last = hour[hour.Count - 1]; if (second.StartHour == second.EndHour) { XtraMessageBox.Show("开始时间和结束时间相同"); return false; } if (frist.EndHour != second.StartHour) { XtraMessageBox.Show("时间输入有误"); return false; } } return true; } //确定 private void btnOk_Click(object sender, EventArgs e) { if (!Virify()) return; var Eleprice = new List(_allBindingHour); var isok = this.ReLoadDataevent.Invoke(Eleprice); if (isok == false) { XtraMessageBox.Show("添加失败"); return; } XtraMessageBox.Show("添加成功"); this.DialogResult = System.Windows.Forms.DialogResult.OK; //确定ok,然后关闭 this.Close(); } //行删除 private void gridView2_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (_allBindingHour == null || _allBindingHour.Count < 1) return; var row = this.gridView2.GetFocusedRow() as Model.ElecPriceHourSetting; if (row == null) return; if (e.Column == this.colDelete) _allBindingHour.Remove(row); } } }