En lugar de usar un TextBox normal debes usar un MaskedTextBox y establecer su propiedad Mask para que formatee el texto como quieras.
Las máscaras son patrones que el textbox debe cumplir o de lo contrario no te deja escribir. Para tus necesidades necesitas las siguientes:
- 0
- Indica un dígito obligatorio entre el 0 y 9
- 9
- Indica un dígito opcional entre el 0 y el 9
- $
- Indica el símbolo de la moneda de la cultura actual. Por ejemplo, en España, sería sustituido por el caracter '€'
- %
- Indica el símbolo del '%'
Estas son las máscaras que deberías poner:
- Para el caso de porcentaje (para introducir valores entre 00% y 99.999%):
- si quieres con dos decimales
- valor entero
- Para moneda:
- "999.990.00$"
- Para mostrar valores entre "0.00$" y "999.999.99$"
Aquí te dejo un enlace a la MSDN dónde tienes más ejemplos y la documentación completa de las máscaras:
http://msdn.microsoft.com/es-es/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1