Many of my problems were solved with no-mask. Mask="" and FormatString="c". I got this from a reply to another thread.
The only issue now is the decimal? . The thing is with the old MaskedTextBox I didn't have to use a nullable type decimal? (and other controls I've seen, a nullable decimal isn't needed). I'm getting a lot of values from my webservice that are type decimal. I guess I could change all them in the webservice to decimal? . Maybe I should anyway, I just usually don't use that.
This is what I'm using below, works great except no max length of the number