using System; using System.Data; using System.Linq; using System.Windows.Forms; using Uestc.Auto6.Dso.ComModel; using Uestc.Auto6.Dso.Core; using Uestc.Auto6.Dso.Core.Decode; using Uni_Trend.MSO7000X.Common.Helper; using Uni_Trend.MSO7000X.Language; namespace Uestc.Auto6.Dso.Protocol.CAN { [System.ComponentModel.ToolboxItem(false)] public partial class CANTriggerSetControl : UserControl, ITriggerSerialView { #region 属性定义 protected new Boolean DesignMode { get { Boolean rtnflag = false; #if DEBUG rtnflag = DesignTimeHelper.InDesignMode(this); #endif return rtnflag; } } 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 CANIDPage _IDPage = new CANIDPage(); private CANDataPage _DataPage = new CANDataPage(); private CANFrameTypePage _FrameTypePage = new CANFrameTypePage(); private CANErrorPacketPage _CANErrorPacketPage = new CANErrorPacketPage(); #endregion 属性定义 public CANTriggerSetControl() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); InitView(); Init(); } private void Init() { } private void InitView() { _DataPage.Presenter = Presenter; this.TlpPanel.Controls.Add(_DataPage, 0, 0); Presenter.TryAddView(_DataPage); _IDPage.Presenter = Presenter; this.TlpPanel.Controls.Add(_IDPage, 0, 1); Presenter.TryAddView(_IDPage); _FrameTypePage.Presenter = Presenter; this.TlpPanel.Controls.Add(_FrameTypePage, 0, 2); _FrameTypePage.Presenter.TryAddView(_FrameTypePage); _CANErrorPacketPage.Presenter = Presenter; Presenter.TryAddView(_CANErrorPacketPage); this.TlpPanel.Controls.Add(_CANErrorPacketPage, 0, 3); this.TlpPanel.Controls.Cast().ToList().ForEach(x => { x.Dock = DockStyle.Fill; }); this.TlpPanel.RowStyles.Cast().ToList().ForEach(x => x.SizeType = SizeType.AutoSize); UpdateCondition(); } public void UpdateView(Object presenter, String propertyName) { if(String.IsNullOrEmpty(propertyName) || propertyName == nameof(CANFDTrigSerialPrsnt.Condition)) { UpdateCondition(); } } private void UpdateCondition() { switch (Presenter.Condition) { case ProtocolCAN.Condition.FrameType: _FrameTypePage.Visible = true; _IDPage.Visible = false; _DataPage.Visible = false; _CANErrorPacketPage.Visible = false; break; case ProtocolCAN.Condition.ID: _IDPage.Visible = true; _DataPage.Visible = false; _FrameTypePage.Visible = false; _CANErrorPacketPage.Visible = false; break; case ProtocolCAN.Condition.Data: _DataPage.Visible = true; _IDPage.Visible = false; _FrameTypePage.Visible = false; _CANErrorPacketPage.Visible = false; break; case ProtocolCAN.Condition.IDandData: _DataPage.Visible = true; _IDPage.Visible = true; _FrameTypePage.Visible = false; _CANErrorPacketPage.Visible = false; break; case ProtocolCAN.Condition.Error: _DataPage.Visible = false; _IDPage.Visible = false; _FrameTypePage.Visible = false; _CANErrorPacketPage.Visible = true; break; default: _IDPage.Visible = false; _DataPage.Visible = false; _FrameTypePage.Visible = false; _CANErrorPacketPage.Visible = false; break; } this.Height = this.TlpPanel.PreferredSize.Height; } } }