windowsforms-2369-controls-and-libraries-scheduler-examples-date-and-time-how-to-implement-custom-conversion-of-a-timespan-value.md
This example demonstrates how to use the HumanReadableTimeSpanHelper instance to implement the custom conversion of a TimeSpan value to a string and vice versa. To do this handle the HumanReadableTimeSpanHelper.ParseString and HumanReadableTimeSpanHelper.ConvertToString events and use the members of the corresponding TimeSpanStringConvertEventArgs object.
using DevExpress.XtraScheduler.Native;
// ...
// Handle the ParseString and ConvertToString events of the HumanReadableTimeSpanHelper.
HumanReadableTimeSpanHelper.ParseString += new TimeSpanStringConvertEventHandler(OnParse);
HumanReadableTimeSpanHelper.ConvertToString += new TimeSpanStringConvertEventHandler(OnToString);
// Custom parsing of a string to a TimeSpan value.
void OnParse(object sender, TimeSpanStringConvertEventArgs e) {
double val;
try {
string number = e.StringValue.Substring(0, e.StringValue.IndexOf(" milliseconds"));
val = Convert.ToDouble(number);
}
catch {
val = 0;
}
e.TimeSpanValue = TimeSpan.FromMilliseconds(val);
e.Handled = true;
}
// Custom conversion of a TimeSpan value to a string.
void OnToString(object sender, TimeSpanStringConvertEventArgs e) {
e.StringValue = e.TimeSpanValue.TotalMilliseconds.ToString() + " milliseconds";
e.Handled = true;
}
Imports DevExpress.XtraScheduler.Native
' ...
' Handle the ParseString and ConvertToString events of the HumanReadableTimeSpanHelper.
AddHandler HumanReadableTimeSpanHelper.ParseString, AddressOf OnParse
AddHandler HumanReadableTimeSpanHelper.ConvertToString, AddressOf OnToString
' Custom parsing of a string to a TimeSpan value.
Sub OnParse(sender As Object, e As TimeSpanStringConvertEventArgs)
Dim val As Double
Try
Dim number As String = e.StringValue.Substring(0, e.StringValue.IndexOf(" milliseconds"))
val = Convert.ToDouble(number)
Catch
val = 0
End Try
e.TimeSpanValue = TimeSpan.FromMilliseconds(val)
e.Handled = True
End Sub
' Custom conversion of a TimeSpan value to a string.
Sub OnToString(sender As Object, e As TimeSpanStringConvertEventArgs)
e.StringValue = e.TimeSpanValue.TotalMilliseconds.ToString() + " milliseconds"
e.Handled = True
End Sub