2012-03-28 3 views
0

Ich habe eine dynamisch gefüllte Datagrid-Ansicht. Wenn ein Benutzer mit der rechten Maustaste auf eine Zelle in der Datagrid-Ansicht klickt, öffnet sich ein Kontextmenü, das sich nach dieser Zelle befindet. Das Kontextmenü hat zwei Möglichkeiten: A und B. Ich möchte den Wert der Zelle auf A setzen, wenn sie A und B auswählen, wenn sie B auswählen. Ich denke, im Idealfall möchte ich die relevante Zelle übergeben als ein Feld in dem Ereignis, das an ContextMenu's ToolStripItem.click übergeben wird. So ist der Handler für ToolStripItem A die Click-Ereignis der entsprechende Zelle aus dem Ereignisse args und setzen Sie sich auf A lesen würde, wie dieser ...So übergeben Sie ein benutzerdefiniertes Ereignisarg, nachdem der Benutzer auf das Toolstrip-Element eines Kontextmenüs geklickt hat

Private Sub A_Click(ByVal sender As System.Object, ByVal e As Customized System.EventArgs) Handles A.Click 
    e.relevantCell.Value=A 
End Sub 

Aber ich kann nicht herausfinden, wie ein benutzerdefiniertes Ereignis arg zu übergeben. Oder wenn es einen einfacheren Weg gibt, dies zu tun? Ich kann nicht einfach die X- und Y-Koordinaten verwenden, da das Kontextmenü/die Maus nicht über die entsprechende Zelle hinweg benötigt wird.

Antwort

1

Mai werden Sie die gewünschte Zelle in der Tag-Eigenschaft setzen können (welche Objekte akzeptiert), dann bei Menüpunkt klicken, erhalten sie die Zelle aus dem Tag und legen sie es Wert ist

Versuchen:

A.Tag = Cell you want to set to A after A is clicked 

Private Sub A_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles A.Click 
    CType(A.Tag, DataGridViewTextBoxCell).Value = "A" 
End Sub 
+0

Aber wie übergebe ich ein benutzerdefiniertes Ereignis arg? (mit einer relevanten Zelleigenschaft) – bernie2436

+0

Sie brauchen nicht, nur das Tag, und Sie sind in Ordnung –

+0

, aber Ereignisargumente haben in der Regel keine relevanten Cell Feld. Ich müsste diese Eigenschaft von Ereignisargumenten einrichten. – bernie2436

0

Guss den Absender Argument als ToolStripItem und anschließend dieses Objekt verwenden, um Typ A oder B zu bestimmen

If CType(sender, ToolStripItem).Text = "A" Then 'Or Text of A 

    'Work to Update Cell 

End If 
+0

Aber wie bekomme ich die entsprechende Zelle? – bernie2436

Verwandte Themen