Search code examples
c#eventsdata-bindingformatmaskedtextbox

custom format or transform data in a MaskedTextBox during databinding


I am looking for a way to display other data in a MaskedTextBox than the data it is bound to (DataTable).

More specifically: The DataTable contains a DateTime column (DateOfBirth). Whenever the year is 1900, I would like to display it as empty in the MaskedTextBox while keeping it in the underlying DataTable, because I use 1900 for "unknown".

Example: Value in the DataTable: 1900-10-09 --[DataBinding]--> MaskedTextBox __-10-09

Currently, I am using the CurrentItemChanged-Event of the BindingSource, to modify the Text-property of the MaskedTextBox. That works nicely as long as I simply browse through the DataTable. However, as soon as I start editing the MaskedTextBox, 1900 is back.

It would be nicer if I could somehow intercept the value that is passed from the DataRow to the MaskedTextBox, instead of replacing it afterwards.

Or maybe there is a way to get the MaskedTextBox to display 1900 as empty?


Solution

  • For completeness: Solution at codeproject

    Have you tried Binding::Format and Binding::Parse? http://msdn.microsoft.com/en-US/library/system.windows.forms.binding_members(v=vs.80).aspx