正在验证是否单击了面板中的按钮

本文关键字:按钮 验证 是否 单击 | 更新日期: 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语句中使用它是无效的。

如果你告诉我一些我不确定的事情,我可以给出一个更好的解决方案:

  1. 按下按钮时做什么?AButton_Click背后的代码是什么?

  2. 在函数btnNameSubmit_Click中调用ValidSelect的目的是什么?

  3. 如果您在ValidSelect中检查pnlBox按钮是否被按下。然后如何按下按钮btnNameSubmit

我希望到目前为止我的解释是可以理解的。当我知道更多信息时,我会编辑我的答案并添加更多信息。