dirka, op 26 juli 2022 - 17:52, zei:
Ok. Dat gaat dus niet, want daar dient een tooltip eigenlijk niet voor in een DataGridView. Dat is ook niet iets dat je wil triggeren in het CellFormatting event.
Als je het toch wil met een Tooltip, dan kan dat op volgende manier, maar ik zie niet in waarom je daar geen eigen Form of Control zou voor gebruiken i.p.v. een ToolTip.
1. DataGridView heet JaarView
2. ToolTip heet ToolTipImage
3. Zet ToolTipImage.OwnerDraw op True
4. Zet JaarView.ShowCellToolTips op False
Noteer: hier wordt de cell.ToolTipText gezet in CellFormatting event.
Jij moet dus de image naar de ToolTipImage krijgen (vandaar mijn vraag waar die vandaan komt).
Visual Basic Code:
Private Sub ToolTipImagePopup(sender As Object, e As PopupEventArgs) Handles ToolTipImage.Popup
e.ToolTipSize = New Size(300, 100)
End Sub
Private Sub ToolTipImageDraw(sender As Object, e As DrawToolTipEventArgs) Handles ToolTipImage.Draw
e.Graphics.FillRectangle(Brushes.BurlyWood, e.Bounds)
e.Graphics.DrawRectangle(Pens.Black, e.Bounds)
e.DrawText()
End Sub
Private Sub JaarView_CellMouseEnter(sender As Object, e As DataGridViewCellEventArgs) _
Handles JaarView.CellMouseEnter
If e.RowIndex >= 0 AndAlso e.ColumnIndex > 0 Then
Dim cell = JaarView.Rows(e.RowIndex).Cells(e.ColumnIndex)
Dim rect = JaarView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, False)
Dim pos = rect.Location
pos.Offset(rect.Width \ 2, rect.Height \ 2)
ToolTipImage.Show(cell.ToolTipText, JaarView, pos, 1000)
End If
End Sub
Schermafbeelding 2022-07-26 180111.png 40,75K
1 downloads
Ik gebruik hier ToolTip.Show, het kan ook met ToolTip.SetToolTip, maar dan moet je elders de positie aanpassen (nu wordt de Left Top van de tooltip in het midden van de cell getoond).