CANTriggerSetControl.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Uestc.Auto6.Dso.Core;
  11. using Uni_Trend.MSO7000X.Language;
  12. using Uni_Trend.MSO7000X.Common.Helper;
  13. using Uni_Trend.MSO7000X.UserControls;
  14. using Uestc.Auto6.Dso.ComModel;
  15. using Uestc.Auto6.Dso.Core.Decode;
  16. namespace Uestc.Auto6.Dso.Protocol.CAN
  17. {
  18. public partial class CANTriggerSetControl : UserControl, ITriggerSerialView
  19. {
  20. #region 属性定义
  21. protected new Boolean DesignMode
  22. {
  23. get
  24. {
  25. Boolean rtnflag = false;
  26. #if DEBUG
  27. rtnflag = DesignTimeHelper.InDesignMode(this);
  28. #endif
  29. return rtnflag;
  30. }
  31. }
  32. private Int32 _RowHeight = 56;
  33. private Int32 _ControlWidth = 120;
  34. public CANTrigSerialPrsnt Presenter
  35. {
  36. get => (CANTrigSerialPrsnt)(ParentForm as ITriggerView).Presenter;
  37. set => (ParentForm as ITriggerView).Presenter = value;
  38. }
  39. ITriggerPrsnt IView<ITriggerPrsnt>.Presenter
  40. {
  41. get => Presenter;
  42. set => Presenter = (CANTrigSerialPrsnt)value;
  43. }
  44. private IProtocolView _DecodeView = new CANSetControl();
  45. private CANIDPage _IDPage = new CANIDPage();
  46. private CANDataPage _DataPage = new CANDataPage();
  47. #endregion 属性定义
  48. public CANTriggerSetControl()
  49. {
  50. InitializeComponent();
  51. }
  52. protected override void OnLoad(EventArgs e)
  53. {
  54. base.OnLoad(e);
  55. InitView();
  56. Init();
  57. }
  58. private void Init()
  59. {
  60. InitTrigggerOn();
  61. }
  62. private void InitTrigggerOn()
  63. {
  64. this.CbxTriggerOn.DataSource = ProtocolCAN.Condition.ID.GetEnumList();
  65. this.CbxTriggerOn.DisplayMember = "Key";
  66. this.CbxTriggerOn.ValueMember = "Value";
  67. this.CbxTriggerOn.SelectedValueChanged += (sender, args) =>
  68. {
  69. if (ParentForm == null)
  70. return;
  71. Presenter.Condition = (ProtocolCAN.Condition)this.CbxTriggerOn.SelectedValue;
  72. };
  73. this.CbxTriggerOn.SelectedValue = Presenter.Condition;
  74. }
  75. private void InitView()
  76. {
  77. _DecodeView.Presenter = ProtocolPrsnt.GetTrigSerialDecodePrsnt(SerialProtocolType.CAN, _DecodeView);
  78. this.TlpPanel.Controls.Add(_DecodeView as Control, 0, 3);
  79. _DataPage.Presenter = Presenter;
  80. this.TlpPanel.Controls.Add(_DataPage, 0, 1);
  81. _IDPage.Presenter = Presenter;
  82. this.TlpPanel.Controls.Add(_IDPage, 0, 2);
  83. this.TlpPanel.Controls.Cast<Control>().ToList().ForEach(x =>
  84. {
  85. x.Dock = DockStyle.Fill;
  86. });
  87. HeadPanel.Height = _RowHeight;
  88. LblTriggerOn.Top = 0;
  89. LblTriggerOn.Left = 0;
  90. CbxTriggerOn.Left = 0;
  91. CbxTriggerOn.Top = LblTriggerOn.Bottom + 2;
  92. HeadPanel.Controls.Cast<Control>().Where(x => (x is UestcLabel) || (x is ComboBoxEx) || (x is UestcIconButton)).ToList().ForEach(x =>
  93. {
  94. x.Width = _ControlWidth;
  95. x.Visible = false;
  96. Uni_Trend.MSO7000X.UserControls.Style.StyleManager.Instance.RegisterControl(x);
  97. });
  98. LblTriggerOn.Visible = true;
  99. CbxTriggerOn.Visible = true;
  100. UpdateCondition();
  101. }
  102. public void UpdateView(String propertyName)
  103. {
  104. switch (propertyName)
  105. {
  106. case nameof(CANTrigSerialPrsnt.Condition):
  107. UpdateCondition();
  108. break;
  109. }
  110. }
  111. private void UpdateCondition()
  112. {
  113. this.CbxTriggerOn.SelectedValue = Presenter.Condition;
  114. switch (Presenter.Condition)
  115. {
  116. case ProtocolCAN.Condition.ID:
  117. _IDPage.Visible = true;
  118. _DataPage.Visible = false;
  119. break;
  120. case ProtocolCAN.Condition.Data:
  121. _DataPage.Visible = true;
  122. _IDPage.Visible = false;
  123. break;
  124. default:
  125. _IDPage.Visible = false;
  126. _DataPage.Visible = false;
  127. break;
  128. }
  129. }
  130. }
  131. }