SpecialPacketPage.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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.Reflection;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using Uestc.Auto6.Dso.Core;
  12. using Uestc.Auto6.Dso.Core.Decode;
  13. using Uni_Trend.MSO7000X.Common.Helper;
  14. using Uni_Trend.MSO7000X.Language;
  15. using Uni_Trend.MSO7000X.UserControls.Style;
  16. namespace Uestc.Auto6.Dso.Protocol.USB
  17. {
  18. public partial class SpecialPacketPage : UserControl,ITriggerSerialView
  19. {
  20. #region 属性
  21. public USBTrigSerialPrsnt Presenter { get; set; }
  22. ITriggerPrsnt IView<ITriggerPrsnt>.Presenter
  23. {
  24. get => Presenter;
  25. set => Presenter = (USBTrigSerialPrsnt)value;
  26. }
  27. protected new Boolean DesignMode
  28. {
  29. get
  30. {
  31. Boolean rtnflag = false;
  32. #if DEBUG
  33. rtnflag = DesignTimeHelper.InDesignMode(this);
  34. #endif
  35. return rtnflag;
  36. }
  37. }
  38. #endregion 属性
  39. public SpecialPacketPage()
  40. {
  41. InitializeComponent();
  42. DefaultStyleManager.Instance.RegisterControlRecursion(this, StyleFlag.FontSize);
  43. }
  44. protected override void OnLoad(EventArgs e)
  45. {
  46. base.OnLoad(e);
  47. InitView();
  48. }
  49. private void InitView()
  50. {
  51. InitSpecialPacketType();
  52. UpdateSpecialPacketType();
  53. }
  54. public void UpdateView(Object presenter, String propertyName)
  55. {
  56. if (string.IsNullOrEmpty(propertyName))
  57. {
  58. UpdateView();
  59. return;
  60. }
  61. this.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance).Where(x =>
  62. {
  63. UpdatePropertyAttribute attribute = x.GetCustomAttribute<UpdatePropertyAttribute>();
  64. return attribute != null && attribute.PropertyName == propertyName;
  65. }).FirstOrDefault()?.Invoke(this, null);
  66. }
  67. private void UpdateView()
  68. {
  69. this.GetType().GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Where(x => x.GetCustomAttribute<UpdatePropertyAttribute>() != null).ToList().ForEach(x =>
  70. {
  71. x?.Invoke(this, null);
  72. });
  73. this.Refresh();
  74. }
  75. private void InitSpecialPacketType()
  76. {
  77. this.CbxSpecialPacketType.DataSource = Enum.GetValues<ComModel.ProtocolUSB.SpecialPacketType>().Select(x =>
  78. {
  79. String key = String.Empty;
  80. key = Properties.Resources.ResourceManager.GetString(x.GetType().ReflectedType.FullName + "." + x.GetType().Name + "." + x.ToString());
  81. if (String.IsNullOrEmpty(key))
  82. {
  83. key = x.ToString();
  84. }
  85. return new KeyValuePair<String, ComModel.ProtocolUSB.SpecialPacketType>(key, x);
  86. }).ToList();
  87. this.CbxSpecialPacketType.ValueMember = "Value";
  88. this.CbxSpecialPacketType.DisplayMember = "Key";
  89. this.CbxSpecialPacketType.SelectedValueChanged += (_, _) =>
  90. {
  91. Presenter.SpecialPacketType = (ComModel.ProtocolUSB.SpecialPacketType)this.CbxSpecialPacketType.SelectedValue;
  92. };
  93. }
  94. [UpdateProperty(nameof(USBTrigSerialPrsnt.SpecialPacketType))]
  95. private void UpdateSpecialPacketType()
  96. {
  97. this.CbxSpecialPacketType.SelectedValue = Presenter.SpecialPacketType;
  98. }
  99. }
  100. }