Как создать текстовое поле с десятичным значением - PullRequest
1 голос
/ 01 апреля 2012

Мне нужно добавить текстовое поле в моем приложении, которое начинает отображаться со значением 0.00 точно так же, как банкомат, когда вы набираете цифры, он сохраняет два десятичных знака до тех пор, пока не будет удовлетворено значением, например, последовательность, которая должна завершиться значение 1023.00 будет (как я печатаю)

0.01
0.10
1.02
10.23
102.30
1023.00

Возможно ли это сделать в приложении Windows Form? Я просто не уверен, как это сделать. Спасибо.

1 Ответ

3 голосов
/ 01 апреля 2012

В этом сценарии я бы использовал не текстовое поле, а метку или текстовое поле только для чтения.Чтобы получить пользовательский ввод, просто используйте событие нажатие клавиши в вашей форме (вы также должны включить 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 настолько усложнена, что случаи, которые вам придется проверять, слишком сложны для обработки - поэтому вместо того, чтобы пытаться превратить пушку в стропу, вы должны начатьсо стропом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...