正在验证是否单击了面板中的按钮
本文关键字:按钮 验证 是否 单击 | 更新日期: 2023-09-27 17:59:08
所以我试图验证是否在面板中单击了按钮。如果按钮上没有其他人的名字,这是为了在按钮上保留一个座位。我一直收到错误"面板"不包含等的定义。
public void DisplayReservations(String[] seating)
{
pnlBox.Controls.Clear();
int startTop = 10;
int startLeft = 10;
for (int seat = 0; seat <= seating.GetUpperBound(0); seat++)
{
Button newButton = new Button();
this.Controls.Add(newButton);
newButton.Text = ("Seat: " + (seat + 1) + " " + seating[seat]);
newButton.Location = new System.Drawing.Point(startTop, startLeft + (seat * 30));
newButton.Click += AButton_Click;
pnlBox.Controls.Add(newButton);
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void radDenver_CheckedChanged(object sender, EventArgs e)
{
piclogo.Load("Cessna.jpg");
lblFlightInfoOut.Text = "";
lblStatusOut.Text = "";
//show the flight info
lblFlightInfoOut.Text = flight1.FlightInfo();
string[] seatChart1 = flight1.GetReservationList();
if (flight1.IsFull() == false)
{
DisplayReservations(seatChart1);
}
else
{
DisplayReservations(seatChart1);
lblStatusOut.Text = "Flight " + flight2.Plane + " to " + flight1.Destination + " Is Full";
}
}
private void radKC_CheckedChanged(object sender, EventArgs e)
{
piclogo.Load("Piper.jpg");
lblStatusOut.Text = "";
lblFlightInfoOut.Text = "";
//show the flight info
lblFlightInfoOut.Text = flight2.FlightInfo();
string[] seatChart2 = flight2.GetReservationList();
if (flight2.IsFull() == false)
{
DisplayReservations(seatChart2);
}
else
{
DisplayReservations(seatChart2);
lblStatusOut.Text = "Flight " + flight2.Plane + " to " + flight2.Destination + " Is Full";
}
}
private void btnNameSubmit_Click(object sender, EventArgs e)
{
string name = "";
int seatNum;
if (CheckText(txtName.Text) == true)
{
name = txtName.Text;
if (radDenver.Checked == true)
{
if (ValidSelect(pnlBox.SelectedIndex) == true)
{
seatNum = pnlBox.SelectedIndex;
if (flight1.MakeReservation(name, seatNum) == true)
{
lblStatusOut.Text = "Seat " + (seatNum + 1) + " is now Reserved for " + name;
DisplayReservations(flight1.GetReservationList());
}
else
{
lblStatusOut.Text = "Sorry " + name + " Seat " + (seatNum + 1) + " is Taken";
}
}
}
else if (radKC.Checked == true)
{
if (ValidSelect(pnlBox.SelectedIndex) == true)
{
seatNum = pnlBox.SelectedIndex;
if (flight2.MakeReservation(name, seatNum) == true)
{
lblStatusOut.Text = "Seat " + (seatNum + 1) + " is now Reserved for " + name;
DisplayReservations(flight2.GetReservationList());
}
else
{
lblStatusOut.Text = "Sorry " + name + " Seat " + (seatNum + 1) + " is Taken";
}
}
}
else
{
lblStatusOut.Text = "Please Select a destination at Step 1";
}
}
}
private bool ValidSelect(int SelectedIndex)
{
if (pnlBox.AButton_Click == false)
{
lblStatusOut.Text = "Please Choose a seat from the List";
return false;
}
return true;
}
在名为DisplayReservations
的函数中的代码顶部,我注意到当单击面板内的按钮时,函数AButton_Click
被设置为激发事件:
newButton.Click += AButton_Click;
在函数ValidSelect
中得到错误的原因是因为以下行:
if (pnlBox.AButton_Click == false)
当我们使用"点"时,我们希望访问对象内部的某些内容。正如我们在代码顶部看到的,AButton_Click
只是代码中的另一个函数,而不是面板(pnlBox
)的一部分。函数AButton_Click
应该像这个一样被激发
if (AButton_Click(null, EventArgs.Empty) == false)
通常情况下,按钮的事件功能如下所示:
private void AButton_Click(object sender, EventArgs e)
然后,在if语句中调用函数时,您必须输入sender和EventArgs。
但是!即便如此,我相信你还是误解了什么。您是否试图检测当前是否按下了功能为AButton_Click
的按钮作为其点击事件?
如果是这样的话,那就不是这样了。你不能用那种方法检测它。按下按钮btnNameSubmit
时,您正在尝试检测面板上的按钮是否被按下,如btnNameSubmit_Click
中所示。如果你问我:D。此外,AButton_Click
的返回类型可能是void
。因此,如果调用函数,甚至无法从函数中获得false
。因此,在if语句中使用它是无效的。
如果你告诉我一些我不确定的事情,我可以给出一个更好的解决方案:
按下按钮时做什么?
AButton_Click
背后的代码是什么?在函数
btnNameSubmit_Click
中调用ValidSelect
的目的是什么?如果您在
ValidSelect
中检查pnlBox按钮是否被按下。然后如何按下按钮btnNameSubmit
?
我希望到目前为止我的解释是可以理解的。当我知道更多信息时,我会编辑我的答案并添加更多信息。