Hallo!
Ich bin gerade dabei ein Control nach meinen Bedürfnissen anzupassen.
Und zwar geht es um ein MonthCalendar!
Da habe ich jetzt ein Override beim OnMouseDown angelegt und wollte das markieren des geklickten Datums umgehen.
Ich möchte den Ur-Zustand des Controls speichern, dann ein Datum mit einem FillRectangle markieren und beim klick auf ein anderes Datum den Ur-Zustand wieder herstellen und das neue Datum "bemalen"!
Das bemalen klappt, aber das wiederherstellen nicht!
Ich hab das "GraphicState" in einer GraphicState Variablen gespeichert aber bei g.restore(GraphicState) passiert nichts!
Hier mein Code, jedoch habe ich ein anderes Control als das vom Standard-Katalog weswegen der Code bei Euch so nicht laufen wird!:
Spoiler anzeigen
Ich bin gerade dabei ein Control nach meinen Bedürfnissen anzupassen.
Und zwar geht es um ein MonthCalendar!
Da habe ich jetzt ein Override beim OnMouseDown angelegt und wollte das markieren des geklickten Datums umgehen.
Ich möchte den Ur-Zustand des Controls speichern, dann ein Datum mit einem FillRectangle markieren und beim klick auf ein anderes Datum den Ur-Zustand wieder herstellen und das neue Datum "bemalen"!
Das bemalen klappt, aber das wiederherstellen nicht!
Ich hab das "GraphicState" in einer GraphicState Variablen gespeichert aber bei g.restore(GraphicState) passiert nichts!
Hier mein Code, jedoch habe ich ein anderes Control als das vom Standard-Katalog weswegen der Code bei Euch so nicht laufen wird!:
VB.NET-Quellcode
-
- Private _graphics As Graphics
- Private _prevGraphics As GraphicsState
- Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
- If (e.Button = MouseButtons.Left) Then
- _graphics = Me.CreateGraphics
- _prevGraphics = _graphics.Save()
- Dim cursorPosition As Point = e.Location
- Debug.WriteLine(cursorPosition)
- Dim hti As MonthViewDay = HitTest(cursorPosition)
- Debug.WriteLine(hti.Date)
- Dim _brush As SolidBrush = New SolidBrush(Color.FromArgb(20, 80, 80, 80))
- _graphics.FillRectangle(_brush, hti.Bounds)
- _graphics.Restore(_prevGraphics)
- End If
- _graphics.Restore(_prevGraphics)
- Return
- End Sub