ho un form con datagridview di 11 colonne e righe variabili (media di 500
), vorrei che quando si entra con il mouse nelle celle di determitate colonne, mi compaia un bottone in prossimità di questa cella (adiacente al margine superiore della cella corrente).. il mio problema che non so come fornire le coordinate a questo bottone affinchè si posizioni pefettamente (o quasi) adiacente alla cella selezionata...
il codice l'ho inserito nell'evento di DataGridView_CellEnter della tabella, così
codice:
Private Sub ElencoDataGridView_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles ElencoDataGridView.CellEnter
' non esegue se è stata attivata la proprietà readonly della cella
If sender.CurrentCell.ReadOnly Then Exit Sub
' è valido solo se la cella appartiene a queste colonne
Select Case sender.columns(e.ColumnIndex).name
Case "RinnovatoGrid", "ScadenzaGrid", "ContrattoGrid"
With DataButton
' questa è solo per ricavare la posizione Left, ma non è precisa
' perchè non tiene conto di colonne nascoste e non nell'aria visibile
Dim Lefts = 0
For i = 0 To e.ColumnIndex
Lefts += sender.Columns(i).Width
Next
' qua dovrebbe posizionare il bottone e renderlo visibile
' ho messo valori che non ci azzeccano na mazza
.Left = Lefts - (.Width / 2)
.Top = sender.Top - (.Height / 2)
.Tag = sender.name
.Visible = True
End With
End Select
End Sub
ovviamente le coordinate calcolate in quel modo non sono per niente valide al caso..
mi è venuta l'idea di usare le coordinate del mouse, ma non so come richiamarle
qualche idea?
edit: adesso che ci penso: se la cella viene selezionata da tastiera le coordinate del mouse non vanno bene, quindi non può essere un'alternativa valida
l'unica è sapere la posizione della cella corrente rispetto alla tabella o al forms.. come si fa?