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;
}
}
}