using DevExpress.XtraEditors; using ExtensionsDev; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Entity; using System.Drawing; using System.Linq; using System.Windows.Forms; using DataSimulation.Repostory; using DataSimulation.Repostory.EFContext; using DataSimulation.Repostory.Model; using DxHelper; namespace DataSimulation.Forms.EditForms { public partial class SatEditor : DevExpress.XtraEditors.XtraForm { public SatInfo info; public SatEditor() { InitializeComponent(); this.layoutControl1.UseDefault(); this.Text = "添加卫星"; info = new SatInfo(); this.StartPosition = FormStartPosition.CenterParent; btnOk.ImageOptions.SvgImage = SvgHelper.LoadFromFile("Images\\Ok.svg"); btnOk.ImageOptions.SvgImageSize = new Size(20, 20); btnCancel.ImageOptions.SvgImage = SvgHelper.LoadFromFile("Images\\Cancel.svg"); btnCancel.ImageOptions.SvgImageSize = new Size(20, 20); txtSatLon.EditValueChanged += TxtSatLon_EditValueChanged; searchLookUpEdit1.EditValueChanged += SearchLookUpEdit1_EditValueChanged; } private void SearchLookUpEdit1_EditValueChanged(object sender, EventArgs e) { searchLookUpEdit1.CheckSearch(dxErrorProvider, "卫星"); } private void TxtSatLon_EditValueChanged(object sender, EventArgs e) { txtSatLon.CheckLon(dxErrorProvider, "轨道"); } public SatEditor(SatInfo info) : this() { this.Text = "编辑卫星"; this.info = info; } private async void SatEditor_Load(object sender, EventArgs e) { var listXl = await XlCache.GetAllAsync(); this.searchLookUpEdit1.UseDefault().SetStringData(listXl.Select(p => p.Sat)).UseDoubleClickToSelectAll(); if (this.Text == "编辑卫星" && info != null) { this.txtSatName.Text = info.SatName; this.txtSatLon.Text = $"{info.SatLon}"; } } private void btnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } private async void btnOk_Click(object sender, EventArgs e) { if (!searchLookUpEdit1.CheckSearch(dxErrorProvider, "卫星") || !txtSatLon.CheckLon(dxErrorProvider, "轨道")) { return; } try { var sat = searchLookUpEdit1.Text; var idx = sat.LastIndexOf('('); var satCodeStr = sat.Substring(idx + 1, sat.Length - idx - 2); info.SatCode = Convert.ToInt32(satCodeStr); info.SatName = txtSatName.Text.Trim(); if (!string.IsNullOrWhiteSpace(txtSatLon.Text)) info.SatLon = Convert.ToDouble(txtSatLon.Text); if (this.Text == "添加卫星") { using (SimulationContext db = new SimulationContext()) { bool isAny = db.SatInfos.Any(s => s.SatName == info.SatName && s.SatCode == info.SatCode && s.SatLon == info.SatLon); if (isAny) { DxHelper.MsgBoxHelper.ShowError($"添加卫星信息失败,已经存在卫星:{info.Sat}"); return; } db.SatInfos.Add(info); await db.SaveChangesAsync(); } } else { using (SimulationContext db = new SimulationContext()) { bool isAny = db.SatInfos.Any(s => s.ID != info.ID && s.SatName == info.SatName && s.SatCode == info.SatCode && s.SatLon == info.SatLon); if (isAny) { DxHelper.MsgBoxHelper.ShowError($"编辑卫星信息失败,已经存在卫星:{info.Sat}"); return; } var find = await db.SatInfos.Where(p => p.ID == info.ID).FirstOrDefaultAsync(); find.SatName = info.SatName; find.SatCode = info.SatCode; find.SatLon = info.SatLon; await db.SaveChangesAsync(); } } this.DialogResult = DialogResult.OK; } catch (Exception ex) { Serilog.Log.Error(ex, $"{this.Text}信息出错"); DxHelper.MsgBoxHelper.ShowError($"{this.Text}信息出错"); } } } }