| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | using DevExpress.Xpo;using DevExpress.XtraEditors;using Ips.Sps.Sats;using System;using System.Collections;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;namespace Ips.Sps.Sigs{    public partial class AdjaSatsEditCtrl : DevExpress.XtraEditors.XtraUserControl    {        public AdjaSatsEditCtrl()        {            InitializeComponent();        }        public event EventHandler AdjaSatsChanged;        private XPBaseCollection _adjaSatList;        Type adjaSatType;        public string AdjaSatText => satComboBoxEdit.Text;        private void AdjaSatsEditCtrl_Load(object sender, EventArgs e)        {        }        public void SetSatList(IList<Sat> satList, string displayMember = "")        {            if (!string.IsNullOrWhiteSpace(displayMember))            {                satComboBoxEdit.Properties.DisplayMember = displayMember;            }            bsAdjaSatList.DataSource = satList;        }        public void SetAdjaSatList<T>(XPCollection<T> adjaSatList) where T : AdjaSatBasic        {            _adjaSatList = adjaSatList;            adjaSatType = typeof(T);            satComboBoxEdit.EditValue = adjaSatList?.Select(m => m.SatId)?.ToList();            satComboBoxEdit.RefreshEditValue();        }        private void satComboBoxEdit_EditValueChanged(object sender, EventArgs e)        {            if (_adjaSatList == null) return;            var satIds = ((IList)satComboBoxEdit.EditValue).Cast<int>();            var adjaSatList = _adjaSatList.Cast<AdjaSatBasic>();            foreach (var satid in satIds)            {                if (!adjaSatList.Any(m => m.SatId == satid))                {                    var obj = Activator.CreateInstance(adjaSatType, _adjaSatList.Session) as AdjaSatBasic;                    obj.SatId = satid;                    _adjaSatList.BaseAdd(obj);                }            }            var removeList = adjaSatList.Where(m => !satIds.Contains(m.SatId)).ToList();            removeList.ForEach(m => _adjaSatList.BaseRemove(m));            AdjaSatsChanged?.Invoke(this, EventArgs.Empty);        }    }}
 |