Back to Devexpress

How to: Implement Custom Conversion of a TimeSpan Value

windowsforms-2369-controls-and-libraries-scheduler-examples-date-and-time-how-to-implement-custom-conversion-of-a-timespan-value.md

latest2.8 KB
Original Source

How to: Implement Custom Conversion of a TimeSpan Value

  • Nov 13, 2018
  • 2 minutes to read

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.

csharp
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;
}
vb
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