Announcement

Collapse
No announcement yet.

kleines Problem mit ContectMenuStrip

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • kleines Problem mit ContectMenuStrip

    Hallo zusammen,
    ich habe ein altes ContextMenu gegen ein ein ContextMenuStrip ausgetauscht.
    Das einzige Event das ich benutze ist das Opening-Event.
    Wenn ich nun rechte Maustaste drücke, kommt der Debugger in diesem Event an, e.Cancel ist in dem Moment aber auf false und das Menü erscheint nicht. Aber nur beim ersten mal. Bei jedem weiteren Rechtsklick erscheint das Menü völlig korrekt.
    Hat jemand eine Idee, woran das liegt?

  • #2
    Hast du vielleicht noch keine Menutems sondern definierst die erst im Event?
    Ohne aktive Menuitems wird Cancel defaultmäßig auf true gesetzt. Wenn du dann selbst MenuItems anlegst kannst du ja immer noch Cancel auf false setzen.

    Comment


    • #3
      Ja, die menuItems werden in der Opening jedesmal neu erstellt

      Comment


      • #4
        Also beim beenden deines Opening EventHandlers hast du MenuItems und Cancel steht auf false und dein Menü erscheint trotzdem nicht? Hmm ....

        Könntest du mal checken ob obwohl kein Menü erscheint der Opened Event trotzdem gefeuert wird?

        Comment


        • #5
          nein, das Opened-Event wird dann nicht gefeuert

          Comment


          • #6
            nein, das Opened-Event wird dann nicht gefeuert
            Hab mir das gerade mal im Source von einem ToolStrip angesehen.
            Wenn Opened nicht feuert muß cancel auf true stehen. Du bist dir sicher das du nicht irgendwo an cancel drehst außer das du selbst cancel auf false setzt im Opening Event?

            Code:
            Finally
                If Not cancel Then
                    Me.OnOpened(New EventArgs)
                End If
            End Try

            Comment


            • #7
              ganz sicher. In dem Moment wo das Opening-Event startet, ist Cancel schon auf True.
              Jetzt geh ich halt hin und die erste Amtshandlung der Methode ist es, Cancel wieder auf False zu setzen.
              Danach werden alle (falls vorhanden) MenuItems gelöscht (Clear) und dann werden die MenuItems neu "gebaut".
              Es gibt sonst keine anderen Events, die sich auf das Menü beziehen.

              Comment


              • #8
                Hi!

                Wann generierst du das Menü? beim mousedown ? up oder klick?

                Gruß Cad

                Comment


                • #9
                  da hab ich nichts Spezielles eingestellt. Kann man das irgendwo regeln? Die MenüItems werden in der .Opening-Methode generiert

                  Comment


                  • #10
                    Ich hatte das gleiche Problem das erst beim zweiten klick das menü erscheint...

                    ich habe das ganze so gemacht:

                    Bsp:
                    Ich hatte eine ListView in der wenn man rechts klickte das ContextMenü erzeugt wurde und dann angezeigt wurde. Ich habe im event MouseDown bei der Listview folgendes gemacht:

                    Auszug:
                    Code:
                     Private Sub ListView_Kursbuchungen_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView_Kursbuchungen.MouseDown
                            If e.Button = Windows.Forms.MouseButtons.Right Then
                                Me.ListView_Kursbuchungen.ContextMenuStrip = ContextMenues.GenerateContextMenue_Kursbuchungen(sender, myUser.SecurityLevel)
                            End If
                        End Sub
                    Das "ContextMenues.GenerateContextMenue_Kursbuchun gen" war eine Funktion welche ein ContextMenü zurück gab.

                    Und beim ContextMenü opening habe ich dann je nach berechtigung und anzahl der gewählten elemente div. aus oder eingeblendet.

                    Ich hatte jedoch das gleiche Problem das eben nur beim zweiten klick das Menü auftauchte!
                    Mein Problem war das ich das Menü beim Mouse UP und nicht beim Mouse DOWN event erzeugte.. was mir später ja dann auch klar war... wenn ich die maustaste nach unten drücke soll das menü zugewiesen werden und beim loslassen ist es ja dann schon da und das ListView control öffnet mir das context menü, was nicht funktioniert wenn ich es beim mouse up anbinde, da offensichlich das contextmenü vor dem mouse up event eingeblendet wird.

                    Ich hoffe ich habe mich einigermaßen verständlich ausdrücken können..

                    gruß Cad

                    Comment

                    Working...
                    X