21. Mai 2009

NullableDateTimePicker

Problem: Der DateTimePicker bietet keine einfache Lösung einen Null-Wert an ein DataBinding zu übermitteln.

Lösung: Erweiterung der DateTimePicker-Klasse um eine NullableValue-Property. Diese muss anstatt der Value-Property für das DataBinding verwendet werden.

  /// 
/// Erweitert den DateTimePicker um eine Nullable Property.
///

public class NullableDateTimePicker: DateTimePicker
{
///
/// Diese Property muss beim DataBinding anstatt der Property
/// Value verwendet werden.
///

public object NullableValue
{
// Nur wenn die Checkbox angehakt ist, den Wert des
// DateTimePicker zurückgeben, ansonsten null
get
{
if (Checked)
{
return Value;
}
else
{
return null;
}
}

// Der Wert des DateTime-Pickers darf nur gesetzt werden,
// wenn der übergebene Wert (value) nicht null ist.
// Ansonsten wird das aktuelle Datum gesetzt und
// die Checkbox auf nicht angehakt gesetzt.
set
{
if (value is DateTime)
{
Value = (DateTime) value;
Checked = true;
}
else
{
Value = DateTime.Now;
Checked = false;
}
}
}
}

Keine Kommentare: