[C#] Forecolor van een DateTimePicker veranderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Down
  • Registratie: Februari 2005
  • Laatst online: 16-09 18:16
Ik wil graag de forecolor van een DateTimePicker veranderen. Het gaat hier om een DateTimePicker met als format Time, en ShowUpDown = true.

Ter verduidelijking:

Afbeeldingslocatie: http://farm5.static.flickr.com/4069/4355381079_3b69c14baa.jpg

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?


Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Beter googlen:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public partial class  MyDateTimePicker : DateTimePicker

    {

        protected override void OnPaint(PaintEventArgs e)

        {

            base.OnPaint(e);

            e.Graphics.FillRectangle(new SolidBrush(Color.Red), this.ClientRectangle);

            e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(Color.Blue), 0, 0);

            e.Graphics.DrawImage(Properties.Resources.DropDownTriangle, new Point(this.ClientRectangle.X + this.ClientRectangle.Width - 16, this.ClientRectangle.Y));

        }

 

        public MyDateTimePicker()

        {

            this.SetStyle(ControlStyles.UserPaint, true);

            InitializeComponent();

        }

    }

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

  • Down
  • Registratie: Februari 2005
  • Laatst online: 16-09 18:16
Heb je die code geprobeerd? Het doet namelijk iets totaal anders. Dat had ik uiteraard zelf ook al gevonden. Misschien beter lezen? ;)

[ Voor 4% gewijzigd door Down op 14-02-2010 13:52 ]

Mother north, how can they sleep while their beds are burning?


Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Down schreef op zondag 14 februari 2010 @ 13:52:
[...]


Heb je die code geprobeerd? Het doet namelijk iets totaal anders. Dat had ik uiteraard zelf ook al gevonden. Misschien beter lezen? ;)
The above code set the control as userPaint in order to fire the OnPaint event, change the background color to red and change the forecolor to Blue.

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

  • Down
  • Registratie: Februari 2005
  • Laatst online: 16-09 18:16
Heb je de code geprobeerd? Het enige wat het doet is een rode achtergrond tekenen met blauwe tekst. Afgezien van het feit dat de picker dan niet meer fatsoenlijk werkt, gaat het mij ook om de kleur van de selectietekst en niet de tekst zelf, zoals ook op het plaatje is aangegeven.

Ik besef me overigens wel dat dit niet perse de forecolor hoeft te zijn. Maar goed, het plaatje spreekt denk ik boekdelen.

Mother north, how can they sleep while their beds are burning?


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Ik denk dat het keyword forecolor verkeerd is, maar dat het iets als selection colour moet zien. Forecolour is op bijna elk control de text kleur.

(Verder zou ik niet weten hoe het verder moet :) ).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Down
  • Registratie: Februari 2005
  • Laatst online: 16-09 18:16
roy-t schreef op zondag 14 februari 2010 @ 14:47:
Ik denk dat het keyword forecolor verkeerd is, maar dat het iets als selection colour moet zien. Forecolour is op bijna elk control de text kleur.

(Verder zou ik niet weten hoe het verder moet :) ).
Ik denk dat je hier gelijk in hebt. Ik was in de veronderstelling dat forecolor hier de selectiekleur betrof omdat de forecolor hier geen effect had op de tekstkleur. Maar goed, het gaat dus inderdaad om de selectiekleur zoals in het plaatje.

Mother north, how can they sleep while their beds are burning?


Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

roy-t schreef op zondag 14 februari 2010 @ 14:47:
Ik denk dat het keyword forecolor verkeerd is, maar dat het iets als selection colour moet zien. Forecolour is op bijna elk control de text kleur.

(Verder zou ik niet weten hoe het verder moet :) ).
Waarom teken je er niet gewoon een ander vierkant overheen?

'You like a gay cowboy and you look like a gay terrorist.' - James May

Pagina: 1