using Message; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace monitor_main_windows { public partial class FormStatusSelect : Form { /// /// 状态修改回调格式声明 /// /// public delegate void StatusCallback(Parkspace_status status, Button btn); /// /// 修改状态回调 /// public StatusCallback m_set_status_callback = null; /// /// 已选择的状态 /// public Parkspace_status m_selected_status { get; set; } /// /// 待修改按钮 /// public Button m_linked_btn; /// /// 构造 /// public FormStatusSelect(Button btn) { InitializeComponent(); m_selected_status = Parkspace_status.EParkspaceError; m_linked_btn = btn; } /// /// 设置回调 /// public void SetCallback(StatusCallback callback) { m_set_status_callback = callback; } /// /// 确认状态修改 /// /// /// private void btn_confirm_Click(object sender, EventArgs e) { Task.Factory.StartNew(() => { this.Invoke(new Action(()=> { //检查执行者状态 if (!Monitor_communication.Instance.check_connect()) { MessageBox.Show("数据库未连接,请检查网络状态!"); } else { Index2status(listBox_status.SelectedIndex); m_set_status_callback?.Invoke(m_selected_status, m_linked_btn); } Close(); })); }); btn_confirm.Enabled = false; btn_cancel.Enabled = false; } /// /// 选项index转状态枚举 /// /// private void Index2status(int index) { switch(index) { case 0: m_selected_status = Parkspace_status.EParkspaceEmpty; break; case 1: m_selected_status = Parkspace_status.EParkspaceOccupied; break; case 2: m_selected_status = Parkspace_status.EParkspaceReserved; break; case 3: m_selected_status = Parkspace_status.EParkspaceLocked; break; case 4: m_selected_status = Parkspace_status.EParkspaceError; break; } } /// /// 取消状态修改 /// /// /// private void btn_cancel_Click(object sender, EventArgs e) { Close(); } private void listBox_status_SelectedIndexChanged(object sender, EventArgs e) { Task.Factory.StartNew(() => { this.Invoke(new Action(() => { //检查执行者状态 if (!Monitor_communication.Instance.check_connect()) { MessageBox.Show("数据库未连接,请检查网络状态!"); } else { Index2status(listBox_status.SelectedIndex); m_set_status_callback?.Invoke(m_selected_status, m_linked_btn); } Close(); })); }); btn_confirm.Enabled = false; btn_cancel.Enabled = false; } } }