ContextMenuStrip Items ausgeben

  • C#

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Vainamo V.

    ContextMenuStrip Items ausgeben

    Heyho!
    Ich arbeite derzeit an ein Projekt für die Schule und ich muss alle Items suchen & ersetzen, die mit { } anfangen bzw. den Text der in diesen beiden Klammern stehen {TEST_TEXT}.
    Aber irgendwie weiß ich nicht genau wie. Ich habe schon einiges probiert und auch schon gegoogelt wie ich alle Items von einem ContextMenuStrip hole, leider hatte ich kein großen Erfolg dabei. Da irgendwie jeder nur die Items wollen, die angeklickt werden.

    Könnt Ihr mir Tipps oder gar Beispiele geben, wie ich das ganze angehen soll?
    Mit freundlichen Grüßen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „meikel__“ ()

    ChOoSeMyNaMe schrieb:

    Zwei Stichwörter, die dir die Lösung bringen sollten:
    -Events vom ContextMenuStrip
    -Properties(Eigenschaften) vom ContextMenuStrip

    LG :rolleyes:

    Danke, konnte damit wenigstens etwas anfangen. Nun bin ich aber auf das nächste Problem gestoßen:

    C#-Quellcode

    1. foreach (ToolStripItem item in shotlyNotificationMenu.Items)
    2. {
    3. string items = item.ToString();
    4. if (items.Contains("SHOTLY_GENERAL_NOTFICATION_TEXT"))
    5. {
    6. string changeMe = items.Contains("SHOTLY_GENERAL_NOTFICATION_TEXT").ToString();
    7. changeMe.Replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");
    8. }
    9. }

    oder

    C#-Quellcode

    1. foreach (ToolStripItem item in shotlyNotificationMenu.Items)
    2. {
    3. string items = item.ToString();
    4. items.replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");
    5. }

    replaced wird nichts. :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „meikel__“ ()

    Welchen Rückgabewert hat

    meikel__ schrieb:

    VB.NET-Quellcode

    1. Replace()
    :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    meikel__ schrieb:

    bool
    Bei mir nicht: String.Replace()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    meikel__ schrieb:

    bool
    Bei mir nicht: String.Replace()

    Ich glaub das mein Code falsch ist. Korrigiert mich, falls es falsch ist.
    So gebe ich die Value aus:

    C#-Quellcode

    1. foreach (ToolStripItem item in shotlyNotificationMenu.Items)
    2. {
    3. string items = item.ToString();
    4. if (items.Contains("SHOTLY_GENERAL_NOTFICATION_TEXT"))
    5. {
    6. string changeMe = items.Contains("SHOTLY_GENERAL_NOTFICATION_TEXT").ToString();
    7. changeMe.Replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");
    8. MessageBox.Show(changeMe); //Bekomme ich true ausgegeben
    9. }
    10. }

    aber der Text in dem ContextMenuStrip bleibt gleich...
    Ist es richtig wie ich es mache? O.O

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „meikel__“ ()

    Du vertust dich komplett mit den Methoden.

    meikel__ schrieb:

    items.Contains("SHOTLY_GENERAL_NOTFICATION_TEXT")

    Ist eine Funktion, die testet ob der String einen bestimmten String enthält und dann eine Boolean zurückgibt. Das ist aber erstens recht sinnlos, da du es darüber bereits prüfst und du ja einen String haben willst.

    meikel__ schrieb:

    changeMe.Replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");

    Ist wie gesagt die Funktion deiner Wahl, aber ich möchte mich zitieren:

    ChOoSeMyNaMe schrieb:

    Replace ist eine Funktion, sprich sie gibt etwas zurück. In dem Fall returned sie einen String, diesen musst du auffangen und dem Item als Text zuweisen.

    Also kurz und schmerzlos:

    C#-Quellcode

    1. if (items.Contains("SHOTLY_GENERAL_NOTFICATION_TEXT"))
    2. {
    3. string changeMe = items.Replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");
    4. MessageBox.Show(changeMe); //Bekomme ich true ausgegeben
    5. }


    LG :rolleyes:

    meikel__ schrieb:

    C#-Quellcode

    1. changeMe.Replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");
    machst Du

    C#-Quellcode

    1. changeMe = changeMe.Replace("SHOTLY_GENERAL_NOTFICATION_TEXT", "test");
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Na ja, du musst den geänderten Text (vermutlich changeMe) ja auch noch in die Property des ContextMenuItems schreiben, damit der Wert im MenuStrip geändert wird.

    An an deiner Stelle würde ich das so machen:

    C#-Quellcode

    1. //Ich bin am iPad und zu faul die Schleife zu tippen, stell dir diesen Code also in der Schleife vor.
    2. item.Text = item.Text.Replace("SHOTLY_GENERAL_NOTIFICATION_TEXT", "test");


    Grüße
    Väinämö

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Vainamo V“ ()