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.Runtime.Remoting.Metadata.W3cXsd2001; using System.Text; using System.Threading.Tasks; using System.Windows.Documents; using System.Windows.Forms; using XdCxRhDW.Entity; using XdCxRhDW.Repostory; namespace XdCxRhDW.App.EditForms { public partial class SigEditor : DevExpress.XtraEditors.XtraForm { public SigInfo info; readonly List list = new List(); public SigEditor() { InitializeComponent(); this.layoutControl1.UseDefault(); this.Text = "添加信号"; info = new SigInfo(); this.StartPosition = FormStartPosition.CenterParent; } public SigEditor(SigInfo info) : this() { this.Text = "编辑信号"; this.info = info; } private async void SatEditor_Load(object sender, EventArgs e) { using (RHDWContext db = new RHDWContext()) { var sats = await db.SatInfos.ToListAsync(); this.txtSat.UseDefault().SetData(sats, nameof(SatInfo.Sat)).UseDoubleClickToSelectAll(); } txtSigType.Properties.Items.Clear(); txtSigType.Properties.Items.AddEnum(); gridSigDelay.UseDefault(list).UseMultiSelect(); if (this.Text == "编辑信号" && info != null) { this.txtFreqUp.EditValue = info.FreqUp; this.txtFreqDown.EditValue = info.FreqDown; this.txtSnr.EditValue = info.Snr; List deWay = new List(); if (info.SigType.HasFlag(EnumSigCheckType.DAMA)) { deWay.Add(EnumSigCheckType.DAMA); } if (info.SigType.HasFlag(EnumSigCheckType.IBS)) { deWay.Add(EnumSigCheckType.IBS); } if (info.SigType.HasFlag(EnumSigCheckType.Ky5758)) { deWay.Add(EnumSigCheckType.Ky5758); } this.txtSigType.EditValue = string.Join(",", deWay); using (RHDWContext db = new RHDWContext()) { var items = await db.SigDelays.Where(p => p.SignalID==info.ID).ToListAsync(); list.AddRange(items); } } } private void btnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } private void btnOk_Click(object sender, EventArgs e) { try { info.FreqUp =Convert.ToDouble( txtFreqUp.EditValue); info.FreqDown = Convert.ToDouble(txtFreqDown.EditValue); info.Snr = Convert.ToDouble(txtSnr.EditValue); this.DialogResult = DialogResult.OK; } catch (Exception ex) { Serilog.Log.Error(ex, "编辑信号信息出错"); DxHelper.MsgBoxHelper.ShowError("编辑信号信息出错"); } } private void btnAddDelay_Click(object sender, EventArgs e) { SigDelay sigDelay = new SigDelay(); sigDelay.SatID = ((SatInfo)txtSat.EditValue).SatCode; sigDelay.Delay = Convert.ToDouble(txtDelay.EditValue.ToString()); if (list.Any(a => a.SatID == sigDelay.SatID)) { DxHelper.MsgBoxHelper.ShowInfo("已添加该卫星"); return; } list.Add(sigDelay); gridView1.RefreshData(); } private void btnDel_Click(object sender, EventArgs e) { var idsGrid = gridView1.GetSelectedRows(); List selectedRes = new List(); foreach (var row in idsGrid) { selectedRes.Add(gridView1.GetRow(row) as SigDelay); } var seltedIds = selectedRes.Select(s => s.SatID); list.RemoveAll(r => seltedIds.Contains(r.SatID)); gridView1.RefreshData(); } } }