Laden...

DateTimePicker mit Hintergrundfarbe

Letzter Beitrag vor 12 Jahren 17 Posts 10.825 Views
DateTimePicker mit Hintergrundfarbe

Hallo zusammen,

ich habe bei vielen Controls (TextBox, ComboBox etc.) eine Hintergrundfarbe beim Enter eingebaut. Jetzt möchte ich das gleiche Verhalten bei dem DateTimePicker haben.

Es soll nur die Hintergrundfarbe geändert werden, die man im eingeklappten Zustand sieht. Der Rest soll unverändert bleiben.

Hat da jemand eine Lösung für?

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Hallo Fabian,

DateTimePicker.BackgroundColor?
DateTimePicker.OnPaintBackground?

herbivore

Hallo

funktioniert das mit DateTimePicker.BackgroundColor? bei mir erkennt er das nicht.

gruss

vermutlich, weil das Propertie:
"DateTimePicker.BackColor"
heißt!

Die BackColor Eigenschaft funktioniert nicht. Deshalb ist sie auch ausgeblendet ( PropertyGrid + Intellisense ).

public class DateTimePickerEx : DateTimePicker
{
    private const int WM_ERASEBKGND = 0x14;

    [Browsable( true )]
    [EditorBrowsable()]
    public override Color BackColor
    {
        get { return base.BackColor; }
        set { base.BackColor = value; }
    }

    protected override void WndProc( ref Message m )
    {
        if( m.Msg == WM_ERASEBKGND )
        {
            using( Graphics g = Graphics.FromHdc( m.WParam ) )
            {
                using( SolidBrush brush = new SolidBrush( this.BackColor ) )
                {
                    g.FillRectangle( brush, this.ClientRectangle );
                }
            }
            return;
        }
        base.WndProc( ref m );
    }
}

Hallo Noodles,

danke für das Code-Snippet. Funktioniert gut.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Hi, ich bring das irgendwie net zum laufen.


this.datumGeburtstag = new DateTimePickerEx();

if (sender is DateTimePicker)
{
       ((DateTimePickerEx)sender).BackColor = Color.White;
}

aber das macht er nicht... hab ich da was falsch gemacht?

gruss

Du hast aber schon alle Posts in diesem Thread gelesen?

ja, habs mit deinem Code-Snipped versucht.

Was mich wundert, Du änderst die Hintergrundfarbe von weiß auf weiß? Da würde ich auch kein Unterschied sehen.

HI Noodles

ja, daran liegt es nicht. hab aus versehen den code kopiert, der beim verlassen des DateTimePickers ausgeführt wird. Und da soll er es ja dann wieder zurückändern.

gruss

Hallo,

hab jetzt diesen Thread durchgearbeitet und auch diesen Datetimepicker-Hintergrundfarbe?

Hab auch schon gegoogelt, leider behält meine DateTimePicker die BackColor nicht.

Immer wenn ich die Form starte wird kurz die neue Farbe angezeigt und dann wieder auf normal zurück gestellt. Muss ich da noch etwas einstellen?

Noch eine Frage aus Interesse, warum hat der Original DateTimePicker nicht die Eigenschaft BackColor? MS muss sich ja was dabei gedacht haben.

Gruss Martin

PS Das Forum ist übrigens sehr gut und auch die Hilfestellung.

Hallo Masterblume,

Noch eine Frage aus Interesse, warum hat der Original DateTimePicker nicht die Eigenschaft BackColor? MS muss sich ja was dabei gedacht haben.

darüber kann man wohl nur spekulieren. Ich glaube nicht, dass MS das irgendwo offengelegt hat.

Meine Vermutung ist, dass die verschieden Controls im Framework nicht alle aus der selben Quelle (sprich von demselben Entwicklungsteam) stammen. Vermutlich sind auch einige zugekaufte dabei. Jede Quelle hat andere Schwerpunkte gesetzt. Auch im grafischen Design der Controls kann man immer wieder kleine Abweichungen von einer einheitlichen Linie erkennen. Ich denke, daher sind auch nicht alle Funktionen gleichermaßen unterstützt.

herbivore

Hallo,
ich bekomme leider beim selbst zeichnen immer nur den Hintergrund, heißt das ich muss die DropDownBox, den Datumstext und die entsprechende Textselektion (SelectionStart, SelectionLength) selbst zeichnen?
Falls ja wie kann man das umsetzen, hat da jemand Snippets oder einen Link zu einer entprechenden DateTime Control Umsetzung?

thx

Ich habe mir mal die Demo Exe heruntergeladen, da scheint man die Hintergrundfarbe der eigentlichen Textbox nicht ändern zu können... insofern dürfte das wohl leider nichts für mich sein, auch wenn man da echt tolle Sachen einstellen kann...

sorry, nahm an, dass die comboboxen mit der backgroundcolor darauf einfluss haben. kann man denn nicht an dem code dort ansetzen?