ucWeightT.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Infragistics.Win.UltraWinEditors;
  11. namespace RailLocalMeter
  12. {
  13. public partial class ucWeightT : UserControl
  14. {
  15. public ucWeightT()
  16. {
  17. InitializeComponent();
  18. }
  19. #region 线程中赋值的控件需使用委托
  20. private delegate void UpdateUIEventHander(object sender, UpdateUIArgs args); //自定义事件用来从线程中更新控件的值
  21. public class UpdateUIArgs : EventArgs
  22. {
  23. public string textValue { get; private set; }
  24. public UpdateUIArgs(string textValue)
  25. {
  26. this.textValue = textValue;
  27. }
  28. }
  29. private void UpdateUI_Method(object sender, UpdateUIArgs args)
  30. {
  31. if(sender is UltraTextEditor)
  32. {
  33. if (args.textValue == "" || args.textValue == null)
  34. {
  35. ((UltraTextEditor)sender).Text = "0";
  36. }
  37. else
  38. {
  39. ((UltraTextEditor)sender).Text = args.textValue;
  40. }
  41. }
  42. else if (sender is Button)
  43. {
  44. if (args.textValue == "red")
  45. {
  46. ((Button)sender).BackColor = Color.Red;
  47. ((Button)sender).ForeColor = Color.White;
  48. }
  49. else if (args.textValue == "green")
  50. {
  51. ((Button)sender).BackColor = Color.White;
  52. ((Button)sender).ForeColor = Color.Black;
  53. }
  54. else
  55. {
  56. ((Label)sender).Text = args.textValue;
  57. }
  58. }
  59. else if (sender is PictureBox)
  60. {
  61. if (args.textValue == "red")
  62. {
  63. ((PictureBox)sender).Load(AppConfigCache.path + "\\image\\icon\\red.gif");
  64. }
  65. else
  66. {
  67. ((PictureBox)sender).Load(AppConfigCache.path + "\\image\\icon\\green.gif");
  68. }
  69. }
  70. }
  71. /// <summary>
  72. /// 记录当前的颜色,在线程中窑调用下面的setControl方法前
  73. /// 可先判断当前的颜色与显示颜色是否一致
  74. /// 若一致则可不调用setControl,不一致再调用
  75. /// </summary>
  76. public bool isGreenWgt = true;
  77. public bool isGrennExceed = true;
  78. /// <summary>
  79. /// 重量稳定
  80. /// </summary>
  81. /// <param name="bGreen"></param>
  82. public void setStable(bool bGreen)
  83. {
  84. if (!CacleCls.isLock)
  85. {
  86. if (picStable.IsHandleCreated)
  87. {
  88. isGreenWgt = bGreen;
  89. string sValue = isGreenWgt ? "green" : "red";
  90. picStable.Invoke(new UpdateUIEventHander(UpdateUI_Method), picStable, new UpdateUIArgs(sValue));
  91. btnStable.Invoke(new UpdateUIEventHander(UpdateUI_Method), btnStable, new UpdateUIArgs(sValue));
  92. }
  93. }
  94. }
  95. /// <summary>
  96. /// 超量程
  97. /// </summary>
  98. /// <param name="bGreen">true为绿色,false红色警告</param>
  99. public void setExceed(bool bGreen)
  100. {
  101. if (!CacleCls.isLock)
  102. {
  103. if (picExceed.IsHandleCreated)
  104. {
  105. isGrennExceed = bGreen;
  106. string sValue = isGrennExceed ? "green" : "red";
  107. picExceed.Invoke(new UpdateUIEventHander(UpdateUI_Method), picExceed, new UpdateUIArgs(sValue));
  108. btnExceedRange.Invoke(new UpdateUIEventHander(UpdateUI_Method), btnExceedRange, new UpdateUIArgs(sValue));
  109. }
  110. }
  111. }
  112. /// <summary>
  113. /// 实时写入重量
  114. /// PbCache.isLockWgt 重量未锁定则可写入,否则调用了也不会写入
  115. /// </summary>
  116. /// <param name="db">重量信息</param>
  117. public void setWgt(double db)
  118. {
  119. if (!CacleCls.isLock)
  120. {
  121. if (txtWeight.IsHandleCreated)
  122. {
  123. txtWeight.Invoke(new UpdateUIEventHander(UpdateUI_Method), txtWeight, new UpdateUIArgs(db.ToString("0.00") + ""));
  124. }
  125. }
  126. }
  127. #endregion
  128. }
  129. }