FormStatusSelect.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using Message;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace monitor_main_windows
  12. {
  13. public partial class FormStatusSelect : Form
  14. {
  15. /// <summary>
  16. /// 状态修改回调格式声明
  17. /// </summary>
  18. /// <param name="status"></param>
  19. public delegate void StatusCallback(Parkspace_status status, Button btn);
  20. /// <summary>
  21. /// 修改状态回调
  22. /// </summary>
  23. public StatusCallback m_set_status_callback = null;
  24. /// <summary>
  25. /// 已选择的状态
  26. /// </summary>
  27. public Parkspace_status m_selected_status { get; set; }
  28. /// <summary>
  29. /// 待修改按钮
  30. /// </summary>
  31. public Button m_linked_btn;
  32. /// <summary>
  33. /// 构造
  34. /// </summary>
  35. public FormStatusSelect(Button btn)
  36. {
  37. InitializeComponent();
  38. m_selected_status = Parkspace_status.EParkspaceError;
  39. m_linked_btn = btn;
  40. }
  41. /// <summary>
  42. /// 设置回调
  43. /// </summary>
  44. public void SetCallback(StatusCallback callback)
  45. {
  46. m_set_status_callback = callback;
  47. }
  48. /// <summary>
  49. /// 确认状态修改
  50. /// </summary>
  51. /// <param name="sender"></param>
  52. /// <param name="e"></param>
  53. private void btn_confirm_Click(object sender, EventArgs e)
  54. {
  55. Task.Factory.StartNew(() => {
  56. this.Invoke(new Action(()=> {
  57. //检查执行者状态
  58. if (!Monitor_communication.Instance.check_connect())
  59. {
  60. MessageBox.Show("数据库未连接,请检查网络状态!");
  61. }
  62. else
  63. {
  64. Index2status(listBox_status.SelectedIndex);
  65. m_set_status_callback?.Invoke(m_selected_status, m_linked_btn);
  66. }
  67. Close();
  68. }));
  69. });
  70. btn_confirm.Enabled = false;
  71. btn_cancel.Enabled = false;
  72. }
  73. /// <summary>
  74. /// 选项index转状态枚举
  75. /// </summary>
  76. /// <param name="index"></param>
  77. private void Index2status(int index)
  78. {
  79. switch(index)
  80. {
  81. case 0:
  82. m_selected_status = Parkspace_status.EParkspaceEmpty;
  83. break;
  84. case 1:
  85. m_selected_status = Parkspace_status.EParkspaceOccupied;
  86. break;
  87. case 2:
  88. m_selected_status = Parkspace_status.EParkspaceReserved;
  89. break;
  90. case 3:
  91. m_selected_status = Parkspace_status.EParkspaceLocked;
  92. break;
  93. case 4:
  94. m_selected_status = Parkspace_status.EParkspaceError;
  95. break;
  96. }
  97. }
  98. /// <summary>
  99. /// 取消状态修改
  100. /// </summary>
  101. /// <param name="sender"></param>
  102. /// <param name="e"></param>
  103. private void btn_cancel_Click(object sender, EventArgs e)
  104. {
  105. Close();
  106. }
  107. private void listBox_status_SelectedIndexChanged(object sender, EventArgs e)
  108. {
  109. Task.Factory.StartNew(() => {
  110. this.Invoke(new Action(() => {
  111. //检查执行者状态
  112. if (!Monitor_communication.Instance.check_connect())
  113. {
  114. MessageBox.Show("数据库未连接,请检查网络状态!");
  115. }
  116. else
  117. {
  118. Index2status(listBox_status.SelectedIndex);
  119. m_set_status_callback?.Invoke(m_selected_status, m_linked_btn);
  120. }
  121. Close();
  122. }));
  123. });
  124. btn_confirm.Enabled = false;
  125. btn_cancel.Enabled = false;
  126. }
  127. }
  128. }