2016-07-27 7 views
-3

Ich versuche also zu überprüfen, ob eine Schaltfläche in einem Bereich angeklickt wird oder nicht. Dies ist dann, um einen Platz auf diesem Knopf zu reservieren, wenn kein anderer Name darauf steht. Ich bekomme immer den Fehler 'Panel' enthält keine Definition für etc..etc.Überprüfen, ob eine Schaltfläche in einem Bereich angeklickt wurde

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

Was? Woher bekommst du den Fehler? Das eigentliche Ding, nach dem der Compiler sucht und sich darüber beschwert, was Sie nicht hilfreicherweise mit "etc..etc" ersetzt haben. ist auch eine Art Schlüsselstück. – itsme86

+0

Es tut mir leid, das ist mein erster Beitrag. Es ist weit unten bei der Methode "validSelect".Der ganze Fehler lautet: "Panel" enthält keine Definition für "AButton_Click" und es wurde keine Erweiterungsmethode "AButton_Click" gefunden, die ein erstes Argument vom Typ "Panel" akzeptiert (fehlt eine using-Direktive oder eine Assembly-Referenz?) – Jarry

+0

Früher Im Code verwenden Sie "AButton_Click" als Handler für ein "Click" -Ereignis. Was lässt Sie denken, dass das 'pnlBox'-Objekt ein Mitglied mit demselben Namen haben sollte? Was lässt Sie denken, dass das Mitglied als "bool" behandelt werden kann? Bitte stellen Sie eine gute [mcve] zur Verfügung, die deutlich zeigt, was Sie versucht haben, und genau erklären, welche Fehlermeldung Sie bekommen, was Sie versucht haben, um sie zu beheben, und wofür Sie speziell Hilfe benötigen. –

Antwort

0

An der Spitze des Codes in Ihrer Funktion DisplayReservations genannt bemerkte ich, dass die Funktion AButton_Click als gefeuert Ereignis gesetzt werden, wenn eine Schaltfläche im Panel klicken:

newButton.Click += AButton_Click; 

Der Grund, warum Sie bekommen der Fehler nach unten in der Funktion ValidSelect ist wegen der folgenden Zeile:

if (pnlBox.AButton_Click == false) 

Wenn wir einen ‚Punkt‘ zu verwenden, wollen wir etwas in zugreifen ide ein Objekt. Und wie wir oben in Ihrem Code sehen können, ist AButton_Click nur eine weitere Funktion in Ihrem Code und kein Teil Ihres Panels (pnlBox). Die Funktion AButton_Click sollte wie dieses

if (AButton_Click(null, EventArgs.Empty) == false) 

Normalerweise würde so aussehen eine Funktion der Taste Ereignis ausgelöst werden:

private void AButton_Click(object sender, EventArgs e) 

Und dann werden Sie den Absender eingeben müssen und die EventArgs beim Aufruf der Funktion in die if-Anweisung.

ABER! Selbst dann glaube ich, dass du etwas falsch verstanden hast. Versuchen Sie zu erkennen, ob gerade eine Taste mit der Funktion AButton_Click als Click-Ereignis gedrückt wird?

Wenn ja, ist das nicht der richtige Weg. Sie können es auf diese Weise nicht erkennen. Sie versuchen zu erkennen, ob eine Taste auf dem Bedienfeld gedrückt wird, wenn Sie die Taste btnNameSubmit drücken, wie in btnNameSubmit_Click zu sehen ist. Das macht wenig Sinn, wenn Sie mich fragen: D. Außerdem ist der Rückgabetyp AButton_Click wahrscheinlich void. Sie können also nicht einmal eine false Funktion aufrufen, wenn Sie sie aufrufen. Daher ist es in einer if-Anweisung ungültig.

Ich kann eine bessere Lösung geben, wenn Sie mir ein paar Dinge sagen, ich bin nicht sicher:

  1. Was bedeutet die Tasten zu tun, wenn sie gedrückt? Was ist der Code hinter AButton_Click?

  2. Was ist der Zweck des Aufrufs ValidSelect in Ihrer Funktion btnNameSubmit_Click?

  3. Wenn Sie in ValidSelect überprüft, ob eine pnlBox-Schaltfläche gedrückt wird. Wie können Sie dann die Taste btnNameSubmit drücken?

Ich hoffe, dass meine Erklärungen soweit verständlich ist. Wenn ich mehr weiß, bearbeite ich meine Antwort und füge weitere Informationen hinzu.

+0

Ich sehe deinen Standpunkt und ändere einige Dinge, um zu sehen, ob ich es selbst herausfinden kann. Danke für diese äußere Meinung, es macht mehr Sinn als das, was ich ursprünglich versuchte zu tun. Wahrscheinlich werde ich noch Hilfe brauchen, da ich neu in dieser Sprache bin. – Jarry

+0

Keine Sorge. Frag einfach nochmal, wenn es nötig ist. Obwohl, FYI, es ist 02:40 Uhr bei mir, also schlafe ich wahrscheinlich bis dahin. Ich werde antworten, wenn ich dann aufwache: D – MasterXD

Verwandte Themen