【发布时间】:2020-12-10 12:52:23
【问题描述】:
所以我每次都有每个面板,当你从 timeComboBox 中单击时间时,面板会显示。
如果按钮已经在数据中,我希望将其禁用,以免重复。
如果数据已经在数据库中,或者如果座位已被保留,我希望禁用该按钮。
有没有可能,我应该在预订书的什么地方或面板的位置或按钮中编写代码:)
这就是现在的样子:
下面是timeComboBox的代码:
private void timeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (timeComboBox.SelectedItem.ToString() == "8 am")
{
showSubMenu(panel1);
panel2.Visible = false;
panel3.Visible = false;// To Hide other panel when opening a panel.
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "9 am")
{
showSubMenu(panel2);
panel1.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "10 am")
{
showSubMenu(panel3);
panel1.Visible = false;
panel2.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "11 am")
{
showSubMenu(panel4);
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "12 pm")
{
showSubMenu(panel5);
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "1 pm")
{
showSubMenu(panel6);
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "2 pm")
{
showSubMenu(panel7);
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "3 pm")
{
showSubMenu(panel8);
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel9.Visible = false;
}
if (timeComboBox.SelectedItem.ToString() == "4 pm")
{
showSubMenu(panel9);
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
}
}
这是预订按钮的代码:
private void reservationButton_Click(object sender, EventArgs e)
{
//Reservation Button.
string nameString = nameTextbox.Text;
string mobileString = mobileTextbox.Text;
string timeString = timeComboBox.Text;
string seatNumberString = textBox1.Text;
bool allPopulatedBool = nameString != string.Empty && mobileString != string.Empty && timeString != string.Empty && seatNumberString != string.Empty;
if (allPopulatedBool)
{
//if the Form are completed.
SqlConnection con = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=LocalDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
con.Open();
string queryString = "INSERT INTO CustomersInfo VALUES(@CustomersName, @CustomersMobile, @CustomersTime, @seatNumber)";
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@CustomersName";
param1.Value = nameString;
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@CustomersMobile";
param2.Value = mobileString;
SqlParameter param3 = new SqlParameter();
param3.ParameterName = "@CustomersTime";
param3.Value = timeString;
SqlParameter param4 = new SqlParameter();
param4.ParameterName = "@seatNumber";
param4.Value = seatNumberString;
SqlCommand command = new SqlCommand(queryString, con);
command.Parameters.Add(param1);
command.Parameters.Add(param2);
command.Parameters.Add(param3);
command.Parameters.Add(param4);
command.ExecuteNonQuery();
con.Close();
MessageBox.Show("Reservation has been Successfully Booked!", "Schedule Added", MessageBoxButtons.OK, MessageBoxIcon.Information);
nameTextbox.Text = string.Empty;
mobileTextbox.Text = string.Empty;
timeComboBox.Text = string.Empty;
textBox1.Text = string.Empty;
panel1.Visible = false;
panel2.Visible = false;
panel3.Visible = false;
panel4.Visible = false;
panel5.Visible = false;
panel6.Visible = false;
panel7.Visible = false;
panel8.Visible = false;
panel9.Visible = false;
}
if (!allPopulatedBool)
{
//if the Form are not completed.
MessageBox.Show("Please fill out all fields.", "Incomplete Entry", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
哇,你真的应该学习如何使用列表来获得优势。重复的代码太多了......想象一下你有 30 个面板而不是 9 个
-
我会搜索它谢谢你:)
-
首先,我会将所有
if检查重做为switch块,这要么更具可读性,而且以后可以更轻松地更改。 e.您的营业时间会发生变化。第二个也是更相关的问题:你在哪里写信,如果某个时间有座位被占用,你使用哪个数据库? -
我有 4 列 CustomersName、CustomersMobile、CustomersTime、seatNumber。我在组合框中选择时间,如果按下座位号按钮,则数字出现在 textBox1 中,然后我将其保存到 LocalDB。我将对其进行编辑并放入 ReservationButton 的代码。
-
基本上我会按照这个想法将日期和/或时间传递给数据库,并返回每个座位的状态。据此,我可以将面板中的按钮设置为
enabled或disabled。这也将使您摆脱大量重复的代码,并让您只用 one 面板处理所有额外的工作。实际上是将椅子(所以buttons)调整到给定时间