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 Uestc.Auto6.Dso.Core; using Uni_Trend.MSO7000X.Language; using Uni_Trend.MSO7000X.Common.Helper; using Uni_Trend.MSO7000X.UserControls; using Uestc.Auto6.Dso.ComModel; using Uestc.Auto6.Dso.Core.Decode; namespace Uestc.Auto6.Dso.Protocol.CAN { public partial class CANTriggerSetControl : UserControl, ITriggerSerialView { #region 属性定义 protected new Boolean DesignMode { get { Boolean rtnflag = false; #if DEBUG rtnflag = DesignTimeHelper.InDesignMode(this); #endif return rtnflag; } } private Int32 _RowHeight = 56; private Int32 _ControlWidth = 120; public CANTrigSerialPrsnt Presenter { get => (CANTrigSerialPrsnt)(ParentForm as ITriggerView).Presenter; set => (ParentForm as ITriggerView).Presenter = value; } ITriggerPrsnt IView.Presenter { get => Presenter; set => Presenter = (CANTrigSerialPrsnt)value; } private IProtocolView _DecodeView = new CANSetControl(); private CANIDPage _IDPage = new CANIDPage(); private CANDataPage _DataPage = new CANDataPage(); #endregion 属性定义 public CANTriggerSetControl() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); InitView(); Init(); } private void Init() { InitTrigggerOn(); } private void InitTrigggerOn() { this.CbxTriggerOn.DataSource = ProtocolCAN.Condition.ID.GetEnumList(); this.CbxTriggerOn.DisplayMember = "Key"; this.CbxTriggerOn.ValueMember = "Value"; this.CbxTriggerOn.SelectedValueChanged += (sender, args) => { if (ParentForm == null) return; Presenter.Condition = (ProtocolCAN.Condition)this.CbxTriggerOn.SelectedValue; }; this.CbxTriggerOn.SelectedValue = Presenter.Condition; } private void InitView() { _DecodeView.Presenter = ProtocolPrsnt.GetTrigSerialDecodePrsnt(SerialProtocolType.CAN, _DecodeView); this.TlpPanel.Controls.Add(_DecodeView as Control, 0, 3); _DataPage.Presenter = Presenter; this.TlpPanel.Controls.Add(_DataPage, 0, 1); _IDPage.Presenter = Presenter; this.TlpPanel.Controls.Add(_IDPage, 0, 2); this.TlpPanel.Controls.Cast().ToList().ForEach(x => { x.Dock = DockStyle.Fill; }); HeadPanel.Height = _RowHeight; LblTriggerOn.Top = 0; LblTriggerOn.Left = 0; CbxTriggerOn.Left = 0; CbxTriggerOn.Top = LblTriggerOn.Bottom + 2; HeadPanel.Controls.Cast().Where(x => (x is UestcLabel) || (x is ComboBoxEx) || (x is UestcIconButton)).ToList().ForEach(x => { x.Width = _ControlWidth; x.Visible = false; Uni_Trend.MSO7000X.UserControls.Style.StyleManager.Instance.RegisterControl(x); }); LblTriggerOn.Visible = true; CbxTriggerOn.Visible = true; UpdateCondition(); } public void UpdateView(String propertyName) { switch (propertyName) { case nameof(CANTrigSerialPrsnt.Condition): UpdateCondition(); break; } } private void UpdateCondition() { this.CbxTriggerOn.SelectedValue = Presenter.Condition; switch (Presenter.Condition) { case ProtocolCAN.Condition.ID: _IDPage.Visible = true; _DataPage.Visible = false; break; case ProtocolCAN.Condition.Data: _DataPage.Visible = true; _IDPage.Visible = false; break; default: _IDPage.Visible = false; _DataPage.Visible = false; break; } } } }