If-Schleife in Case-Anweisung



  • Hallo Leute,
    sagt mal ist es möglich diese Fallunterscheidung

    if(this->radioButton1->Checked) 
    {
    	...
    }		
    else if(this->radioButton2->Checked) 
    {
    	...
    }
    else if(this->radioButton3->Checked) 
    {
    	...
    }
    

    in eine Case-Anweisung umzuschreiben?
    Irgendwie Fehlt mir dazu der Ausdruck ...

    switch ( ... Ausdruck ... )
    {
    	case this->radioButton1->Checked:
    		...
    		break;
    	case this->radioButton2->Checked:
    		...
    		break;
    	case this->radioButton3->Checked:
    		...
    		break;
    }
    

    Finde ich halt doof, wenn das Prog für die abfrage immer alle if-Schleifen durchlaufen muss.
    Gruß,
    Saul



  • switch(true) {
    

    Ist dann aber Code, wo man dreimal drüber nachdenken muss, während das if-Konstrukt einfach lesbar ist.



  • Dachte halt nur daran, das Case doch eigentlich schneller sein müsste.



  • Saul schrieb:

    Dachte halt nur daran, das Case doch eigentlich schneller sein müsste.

    Ist das überhaupt erlaubt? Ich dachte der case Wert muss kosntant sein.
    Apropos: Sollte man nicht vielen Radiobuttons entweder eine Liste, Tabcontrol doer Combobox nehmne?



  • Wieso sollte man?
    Wenn ich mich richtig entsinne ist die ComboBox son "ausklappmenü" ... das dauert mir zu lange. Mal fix den gewünschten RadioButton geklickt geht doch viel schneller.
    Tabcontrol lohnt sich nicht für das Prog ...

    Also kommt doch immer auf das Layout bzw. aufs Projekt an.



  • Saul schrieb:

    Wieso sollte man?
    Wenn ich mich richtig entsinne ist die ComboBox son "ausklappmenü" ... das dauert mir zu lange. Mal fix den gewünschten RadioButton geklickt geht doch viel schneller.
    Tabcontrol lohnt sich nicht für das Prog ...

    Also kommt doch immer auf das Layout bzw. aufs Projekt an.

    Gibts dafür nicht sowas wie RadioButtonList oder RadioButtonGroup bevor man da jedes Element einzeln abprüfen muss, wenn eh nur eins gleichzeitig aktiv sein kann?



  • Andere Frage...
    Von wie vielen RadioButtons reden wir hier?
    100? 200? 800?



  • Weiß noch nich genau aber maximal 5



  • Dann nimm die if-Anweisung...



  • OK 😃



  • Wundert mich, dass noch niemand darauf hingewiesen hat: http://if-schleife.de/



  • Fedaykin schrieb:

    Saul schrieb:

    Wieso sollte man?
    Wenn ich mich richtig entsinne ist die ComboBox son "ausklappmenü" ... das dauert mir zu lange. Mal fix den gewünschten RadioButton geklickt geht doch viel schneller.
    Tabcontrol lohnt sich nicht für das Prog ...

    Also kommt doch immer auf das Layout bzw. aufs Projekt an.

    Gibts dafür nicht sowas wie RadioButtonList oder RadioButtonGroup bevor man da jedes Element einzeln abprüfen muss, wenn eh nur eins gleichzeitig aktiv sein kann?

    genau so ist es, damit würden alle IF-Abfragen entfallen

    Aufbau:

    // 
    			// groupBoxnew
    			// 
    			this->groupBox->Controls->Add(this->radioButton5);
    			this->groupBox->Controls->Add(this->radioButton4);
    			this->groupBox->Controls->Add(this->radioButton3);
    			this->groupBox->Controls->Add(this->radioButton2);
    			this->groupBox->Controls->Add(this->radioButton1);
    			this->groupBox->Location = System::Drawing::Point(12, 12);
    			this->groupBox->Name = L"selektiv";
    			this->groupBox->Size = System::Drawing::Size(242, 238);
    			this->groupBox->TabIndex = 0;
    			this->groupBox->TabStop = false;
    			this->groupBox->Text = L"groupBox_new";
    


  • Trotzdem muß man die einzelnen RadioButtons separat nach dem Checked-Status abfragen (die GroupBox gruppiert nur, hat selber aber keine Eigenschaft zum Auslesen des aktiven RadioButtons).

    Es gibt aber einige Komponenten dafür, u.a.:
    http://www.codeproject.com/KB/selection/OptionGroup.aspx

    Ich selber habe auch eine dynamische RadioGroupBox für meine GameBase-Library erzeugt, s. http://www.mycsharp.de/wbb2/thread.php?threadid=83080
    (diese befindet sich in den Sourcen unter "Dialogs/LoginDlg.cs" in der Methode "InitGameOver"). Diese entspricht der "RadioGroupBox" aus der Borland-VCL - bei Bedarf könnte ich daraus eine eigene Komponente entwickeln.

    Und hier noch eine andere sogenannte RadioGroupBox (entspricht nicht den Anforderungen dieses Beitrags, zeigt aber, was man selber alles entwickeln kann):
    http://www.codeproject.com/KB/miscctrl/CheckGBAndRadioGB.aspx


Anmelden zum Antworten