我有一个表单,用户输入我保存在数组中的值,但是当用户想要取消时,我希望用户最后一次询问用户是否要继续取消预订。如果用户拒绝这个最后的时间,我希望程序返回到GUI并关注具有所有预订行的文本框而不进行取消,但我向您显示我编写的代码,并询问用户是否是确定如果没有,它仍会删除预订,然后专注于文本框。我的代码出了什么问题?
public void Cancelreservation()
{
int index = lstReservations.SelectedIndex;
bool checkedindex = m_seatMngr.CheckIndex(index);
if (checkedindex)
{
if (!m_seatMngr.CancelSeat(index))
{
if (lstReservations.SelectedIndex == -1)
{
MessageBox.Show("You need to select a row.", "Error!",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
lstReservations.Focus();
}
else
{
MessageBox.Show("The seat is not reserved! No need to cancel
reservation.", "Important Query",
MessageBoxButtons.OK);
lstReservations.Focus();
}
}
else
{
if (MessageBox.Show("Continue to cancel the reservation?",
"Important Query", MessageBoxButtons.YesNo)
== DialogResult.No)
{
lstReservations.Focus();
}
else
{
m_seatMngr.CancelSeat(index);
}
}
}
m_seatMngr
public bool CancelSeat(int index)
{
if (m_vacantList[index] == "Reserved")
{
m_nameList[index] = " - ";
m_priceList[index] = 0;
m_vacantList[index] = "Vacant";
return true;
}
else
{
return false;
}
}
答案 0 :(得分:3)
假设m_seatMngr.CancelSeat(index)
是实际取消座位的方法,您将调用该方法两次。第二个if
语句,代码中有六行,是:
if (!m_seatMngr.CancelSeat(index))
...并且似乎(根据上述假设)此行将在您显示MessageBox之前取消座位。
答案 1 :(得分:2)
if (!m_seatMngr.CancelSeat(index))
{
// the rest of your code, which displays the messageboxes
}
在您显示任何消息框之前,总是调用m_seatMngr.CancelSeat。