Ik wil graag de forecolor van een DateTimePicker veranderen. Het gaat hier om een DateTimePicker met als format Time, en ShowUpDown = true.
Ter verduidelijking:

Hierbij gaat het dus om de blauwe kleur. Je zou denken dat simpelweg de forecolor veranderen genoeg zou zijn. Echter kun je alleen de kleur aanpassen van de Calendar, en niet van het time gedeelte.
Ik heb al geprobeerd om met reflection de ForeColor te setten, dit heeft echter geen effect.
Een ander idee dat ik had was om de MessageLoop van het control te overriden en de message van de ForeColor af te vangen. Dit lukt me wel voor de background:
Dit resulteert in een groene achtergrond. Prachtig, alleen wil ik dus de foreground kleur veranderen. Ik kan er echter niet achter komen wat de windows message is voor de forecolor.
Wellicht een andere optie zou zijn om zelf een message naar het control te sturen. Probleem hierbij is echter weer dat ik niet weet welke message dit zou moeten zijn.
Heeft iemand een beter idee? (of uberhaupt een oplossing). Een ander control gebruiken is geen optie, het moet de native datetimepicker zijn.
Ter verduidelijking:

Hierbij gaat het dus om de blauwe kleur. Je zou denken dat simpelweg de forecolor veranderen genoeg zou zijn. Echter kun je alleen de kleur aanpassen van de Calendar, en niet van het time gedeelte.
Ik heb al geprobeerd om met reflection de ForeColor te setten, dit heeft echter geen effect.
Een ander idee dat ik had was om de MessageLoop van het control te overriden en de message van de ForeColor af te vangen. Dit lukt me wel voor de background:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| protected override void WndProc(ref Message m) { // WM_ERASEBKGND if (m.Msg == 0x14) { Graphics g = Graphics.FromHdc(m.WParam); g.FillRectangle(new SolidBrush(Color.Green), this.ClientRectangle); g.Dispose(); } else base.WndProc(ref m); } |
Dit resulteert in een groene achtergrond. Prachtig, alleen wil ik dus de foreground kleur veranderen. Ik kan er echter niet achter komen wat de windows message is voor de forecolor.
Wellicht een andere optie zou zijn om zelf een message naar het control te sturen. Probleem hierbij is echter weer dat ik niet weet welke message dit zou moeten zijn.
Heeft iemand een beter idee? (of uberhaupt een oplossing). Een ander control gebruiken is geen optie, het moet de native datetimepicker zijn.
Mother north, how can they sleep while their beds are burning?