if-Abfrage wird übergangen



  • Hallo,

    ich habe eine Timer-Prozedur geschrieben, in der die Kontrolle zweier RadioButtons darüber entscheiden soll, was die Schleife ausführt.

    Zum einen gibt es den "radioButtonRechteck", bei dem ein Rechteck von groß nach klein in einem Zeichenfeld zusammenlaufen soll.
    Der Andere heißt "radioButtonKreis", und hier soll das Gleiche mit einem Kreis geschehen.

    Mein Code sieht so aus:

    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e)
    		 {	
    			Graphics ^zeichenflaeche;
    			zeichenflaeche = panel1 ->CreateGraphics();
    			Pen ^stift = gcnew Pen(Color::Black);
    			zeichenflaeche -> Clear(BackColor);
    
    			if (radioButtonKreis -> Enabled == true)
    			{
    				if (aufrufe < 22)
    				{
    					bereich.Width = bereich.Width - 10;
    					bereich.Height = bereich.Height - 10;
    					bereich.Location = Point(bereich.Location.X + 5, bereich.Location.Y + 5);
    
    					zeichenflaeche -> DrawEllipse(stift, bereich);
    				}
    				aufrufe ++;
    			}
    
    			else if (radioButtonRechteck -> Enabled == true)
    			{
    				if (aufrufe < 22)
    				{
    					bereich.Width = bereich.Width - 10;
    					bereich.Height = bereich.Height - 10;
    					bereich.Location = Point(bereich.Location.X + 5, bereich.Location.Y + 5);
    
    					zeichenflaeche -> DrawRectangle(stift, bereich);
    				}
    				aufrufe ++;
    			}
    		 }
    

    Hier wird gar nicht auf den "radioButtonRechteck" eingegangen, egal welcher angewählt ist, es wird immer die Kreis-"Animation" gezeigt.

    Außerdem hatte ich vorher die vereinfachte Variante:

    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e)
    		 {	
    			Graphics ^zeichenflaeche;
    			zeichenflaeche = panel1 ->CreateGraphics();
    			Pen ^stift = gcnew Pen(Color::Black);
    			zeichenflaeche -> Clear(BackColor);
    
    			if (aufrufe < 22)
    			{
    				bereich.Width = bereich.Width - 10;
    				bereich.Height = bereich.Height - 10;
    				bereich.Location = Point(bereich.Location.X + 5, bereich.Location.Y + 5);
    
    				if (radioButtonKreis -> Enabled == true)
    				{
    					zeichenflaeche -> DrawEllipse(stift, bereich);
    				}
    				else if (radioButtonRechteck -> Enabled == true)
    				{
    					zeichenflaeche -> DrawRectangle(stift, bereich);
    				}
    
    				aufrufe ++;
    			}
    		 }
    

    In der vereinfachten Variante wurden immer beide Prozeduren gleichzeitig ausgeführt, statt die if-Abfrage durchzugehen und zu merken, dass nur ein RadioButton aktiv sein kann. (Wird eine der beiden Teile auskommentiert, funktioniert der Andere aber wie gewünscht).

    Könnt ihr mir helfen, bitte. Wo liegt mein Fehler, ich seh's einfach nicht.

    Gruß,
    Son_of_onE



  • Checked, nicht Enabled.

    Enabled steuert und gibt wieder, ob das Steuerelement benutzbar ist.



  • Der Wald und die Bäume ... DANKE! 👍


Anmelden zum Antworten