В этом сценарии я бы использовал не текстовое поле, а метку или текстовое поле только для чтения.Чтобы получить пользовательский ввод, просто используйте событие нажатие клавиши в вашей форме (вы также должны включить KeyPreview в форме) - затем просто запомните нажатые клавиши / цифры и выведитеформат, на который вы нацеливаетесь - должен быть довольно простым алгоритмом ( Char.IsNumber , и String.Format может пригодиться):
private int _inputNumber = 0;
private void Form_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (!Char.IsNumber(e.KeyChar)) return;
_inputNumber = 10*_inputNumber + Int32.Parse(e.KeyChar.ToString());
ReformatOutput();
}
private void ReformatOutput()
{
myOutput.Text = String.Format("{0:0.00}", (double)_inputNumber / 100.0);
}
Примечание: почемуне используйте текстовое поле - потому что его внутренняя логика с select / replace / remove / type настолько усложнена, что случаи, которые вам придется проверять, слишком сложны для обработки - поэтому вместо того, чтобы пытаться превратить пушку в стропу, вы должны начатьсо стропом.