Ciao Davide,
complimenti per il bellissimo lavoro. Guardando i tuoi esempi ho visto come creare un context menu per una o piu' celle ma come posso fare a vedere quale item del menu e' stato scelto e comportarmi di conseguenza?
grazie
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Grazie Mille,
poiche' mi serviva sapere anche la cella che aveva lanciato il popup, nella classe del menu ho dichiarato un membro di tipo SourceGrid.CellContext; sull'evento di popUp del menu questo membro memorizza la cella "lanciante" e sull'evento ItemClicked del menu
lancio un evento custom "MenuItemClicked" a cui poi risponde il mio form e sembra fuzionare benissimo.
Grazie ancora,
P.S:
Qui sotto metto il codice della classe MenuPopUp magari puo' servire a qualcuno con poca esperienza di programmazione come me
Public Class MyPopUpMenu
Inherits Cells.Controllers.ControllerBase
Private menu As ContextMenuStrip = New ContextMenuStrip
Event MenuItemClicked(ByVal sender As SourceGrid.CellContext, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
Private sender_cell As SourceGrid.CellContext
Public Overrides Sub OnMouseUp(ByVal sender As SourceGrid.CellContext, ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseUp(sender, e)
sender_cell = sender
If e.Button = Windows.Forms.MouseButtons.Right Then
menu.Show(sender.Grid, New Point(e.X, e.Y))
End If
End Sub
Private Sub MyMenuClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
' MessageBox.Show(e.ClickedItem.Text, "pio", MessageBoxButtons.OK)
RaiseEvent MenuItemClicked(sender_cell, e)
sender_cell = Nothing
End Sub
Public Sub New()
menu.Items.Add("Manage Rows...")
menu.Items.Add("Move Row To Top")
menu.Items.Add("Move Row To Bottom")
AddHandler menu.ItemClicked, AddressOf MyMenuClick
sender_cell = Nothing
End Sub
End Class
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ciao Davide,
complimenti per il bellissimo lavoro. Guardando i tuoi esempi ho visto come creare un context menu per una o piu' celle ma come posso fare a vedere quale item del menu e' stato scelto e comportarmi di conseguenza?
grazie
Ciao,
Puoi utilizzare la normale gestione degli eventi del menu di .NET.
Ogni menu che crei ha un evento Click (o MenuClick) a cui puoi sottoscriverti. Quando l'utente selezionerà il menu verrà richiamata la tua funzione.
Davide
Grazie Mille,
poiche' mi serviva sapere anche la cella che aveva lanciato il popup, nella classe del menu ho dichiarato un membro di tipo SourceGrid.CellContext; sull'evento di popUp del menu questo membro memorizza la cella "lanciante" e sull'evento ItemClicked del menu
lancio un evento custom "MenuItemClicked" a cui poi risponde il mio form e sembra fuzionare benissimo.
Grazie ancora,
P.S:
Qui sotto metto il codice della classe MenuPopUp magari puo' servire a qualcuno con poca esperienza di programmazione come me
Public Class MyPopUpMenu
Inherits Cells.Controllers.ControllerBase
Private menu As ContextMenuStrip = New ContextMenuStrip
Event MenuItemClicked(ByVal sender As SourceGrid.CellContext, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
Private sender_cell As SourceGrid.CellContext
Public Overrides Sub OnMouseUp(ByVal sender As SourceGrid.CellContext, ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseUp(sender, e)
sender_cell = sender
If e.Button = Windows.Forms.MouseButtons.Right Then
menu.Show(sender.Grid, New Point(e.X, e.Y))
End If
End Sub
Private Sub MyMenuClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
' MessageBox.Show(e.ClickedItem.Text, "pio", MessageBoxButtons.OK)
RaiseEvent MenuItemClicked(sender_cell, e)
sender_cell = Nothing
End Sub
Public Sub New()
menu.Items.Add("Manage Rows...")
menu.Items.Add("Move Row To Top")
menu.Items.Add("Move Row To Bottom")
AddHandler menu.ItemClicked, AddressOf MyMenuClick
sender_cell = Nothing
End Sub
End Class