Windows.Forms.MenuStrip Auswahlmenü



  • Hallo! Ich habe ein MenuStrip angelegt in dem per Dropdown bestimmte Werte ausgewählt werden können sollen! Wie kann ich dafür sorgen, dass nur ein Wert davon auswählbar ist und wie frage ich dessen Status ab?

    Screenshot zur Veranschaulichung:

    http://img521.imageshack.us/img521/3488/zeitda9.gif

    Im Screenshot sieht man, dass mehrere Werte auswählbar sind.



  • if(zufallToolStripMenuItem->CheckState == CheckState::Checked)
    {
    //tue was
    }
    

    🙂



  • Ah prima! Danke, das hilft mir schonn weiter! Weißt du auch was zur "Auswahl"-Problematik?



  • Checke jedes Element, in einer Schleife, ob es ausgewählt wurde wenn nicht darf er ein neues auswählen 🙂

    Helfender Helfer



  • Hm.. gibt es hierfür nicht eine einfachere Möglichkeit? Denn ein Dropdown-Selection-Menu ist doch ein alltäglich normales Instrument in Forms oder nicht?

    Dennoch danke für den Tipp! Logisch, aber manchmal sieht man vor lauter Bäumen... naja weißte ja 🙂



  • Also hier ein kleiner Tipp von mir:

    bool schonGecheckt = false;
    
    foreach(ToolStripMenuItem ^item in menuStrip1->Items)
    {
        //if(item->Checked) <- würde auch gehen
        if (item->CheckState == CheckState->Checked)
              schonGecheckt = true;
    }
    
    if(!schonGecheckt)
    {
        //tu dies und das
    }
    

    nur ein kleiner Denkanstoß von mir 😉



  • Hey das ist lieb, dankeschön! Das ganze kommt dann in meine Form1.cs denke ich?
    Fehlt mir aber noch das automatische Abwählen des alten Eintrags wenn ein neuer ausgewählt wurde.

    Ich kann mir einfach nicht vorstellen, dass dort .NET nicht schon ein passendes Menu mitliefert für solch eine Auswahl.



  • Ja kommt es ach und sorry dass das auf C++/CLI war 😃 schwirre hier grad rum in den Forum und habs verwechselt... Du solltest noch drauf achte das der in der Foreach schleife

    foreach(ToolStripMenuItem item in menuStrip1.Items)
    {
        //if(item.Checked) <- würde auch gehen
        if (item.CheckState == CheckState.Checked)
              item.CheckState = CheckState.Unchecked
    }
    

    alles unchecked macht und das was der benutzer anglickt checked ist. So verhinderst du das mehrere gleichzeitig gechecked sind und das der benutzer nicht erst sein altes gechecktes unchecked machen muss... 🙄 verwirrend


Anmelden zum Antworten