Announcement

Collapse
No announcement yet.

Dynamisches Kontextmenü

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

  • Dynamisches Kontextmenü

    Hallo alle zusammen,

    Umgebung: VS 2010, VB-Projekt

    Folgender Sachstand:
    Ich habe eine Form mit einem Datagridview (DGV). Den Spalten des DGV's habe ich ein Kontextmeü zugewiesen. Bei Aufruf dieses Menüs soll z.B. über die Spalte gefiltert werden können. Eine entspr. Funktion ist hinterlegt. Nun geht es nur um Schönheit.
    Der Text des ToolStripMenuItems soll dynamisch sein.
    zum Beispiel "Filter über Spalte1" oder "Filter über Spalte2".
    Über das Event CellContextmenuNeeded ermittle ich den Namen der jeweiligen Spalte.

    Code:
        Private Sub DGV1_CellContextMenuStripNeeded(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellContextMenuStripNeededEventArgs) Handles DGV1.CellContextMenuStripNeeded
            If e.ColumnIndex <> -1 Then
     
                filter_spalte_haeder = DGV1.Columns(e.ColumnIndex).HeaderText
             
            End If
        End Sub
    Über das Event Opening des Kontextmenüs möchte ich dann den Text zuweisen

    Code:
        Private Sub cm_filter_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles cm_filter.Opening
            Try
    
                Me.FilterEinstellen.Text = "Filter " & filter_spalte_haeder
    
            Catch ex As Exception
                tools.show_errors(ex, Me.Name, "cm_filter_Opening")
            End Try
    
        End Sub

    Dummerweise funktioniert das in einer anderen Form auch. In meiner aktuellen Form funktioniert dies aber nicht. Es bleibt bei dem Text, welcher im normalen Load-Vorgang der Maske dem ToolStripMenuItem zugewiesen wurde.
    Ich habe keine Ahnung, warum es mal funktioniert und in einer anderen Maske eben nicht. Die Eigenschaften des Contextmenustrips sind in beiden Masken gleich.

  • #2
    Wird denn dein CellContextMenuStripNeeded Event aufgerufen? Und wenn nicht hast du die Hinweise in der Doku zum Event gelesen unter welchen Bedingungen/Einschränkungen denn das Event gefeuert wird?

    Comment


    • #3
      Hallo Ralf Jansen,

      offenbar werden beide Events aufgefufen. Ich habe mir in das 'cm_filter_Opening-Event' ein Debug.Print eingebaut. Dort wird dann die korrekte Spalte ausgegeben. Der Wert ist also theoretisch zugewiesen.

      Comment


      • #4
        1)mach mal beim debuggen Haltepunkte an die Zuweisung und irgendwann danach und prüfe, ob die Texteigenschaft dann immer noch korrekt gesetzt wird.
        2)markiere mal "FilterEinstellen" und mach dann "Find all references" um zu überprüfen, ob du die Eigenschaft "Text" irgendwo überschreibst

        Comment


        • #5
          Hallo CLL und danke für Deine Hilfe,

          also Debug davor und Debug danach liefern die gewünschten Werte. Die Referenz zeigt 2 Stellen, an denen der Wert überschrieben wird.

          1. Stelle - ...Designer.vb
          2. Stelle - ...maske.vb

          Die Designerdatei sollte nur beim Laden der Maske wirken, dachte ich zumindest.

          Comment

          Working...
          X