Чувство десятичной дроби в текстовом поле - PullRequest
1 голос
/ 01 мая 2011

Я разрабатываю своего рода калькулятор для Windows Phone.

Не нужно использовать десятичные дроби.(кому нужно .39 кирпича)

Как я могу обнаружить, что в строке или текстовом поле есть десятичный знак?

РЕДАКТИРОВАТЬ: Спасибо, @Bala R и @Afnan.Но то, что я преследовал, было тем, что отфильтровывало и письма.Мой ответ ниже.

Ответы [ 4 ]

2 голосов
/ 01 мая 2011

Modyfying код Bala R дает

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Contains(".") || textBox1.Text.Contains(","))
                textBox1.Text = textBox1.Text.Replace(".", string.Empty).Replace(",", string.Empty);
        }

это удалит недействительные символы, которые вводятся при вводе ввода

1 голос
/ 01 мая 2011

Я думаю, что вам нужно проверить, является ли значение действительным десятичным значением.

Использовать TryParse Метод:

decimal value;

string textValue = textBox.Text;
bool isDecimal = decimal.TryParse(textValue, out value)
1 голос
/ 01 мая 2011

Вы можете использовать это, чтобы увидеть, есть ли "точка" в строке

 bool hasDecimal = textBox.Text.Contains(".") 

, но более десяти периодов будет плохо для десятичного значения.

0 голосов
/ 01 мая 2011

Вот что я нашел, работает лучше всего:

bool bNeedToUpdate = false;<p> StringBuilder szNumbersOnly = new StringBuilder();<p> TextBox textSource = sender as TextBox;<p> if (null == textSource)<p> return;<p> foreach (char ch in textSource.Text)<p> {<p> if (("0123456789").Contains(ch.ToString()))<p> {<p> szNumbersOnly.Append(ch);<p> }<p> else<p> {<p> bNeedToUpdate = true;<p> }<p> }<p> if (bNeedToUpdate)<p> {<p> textSource.Text = szNumbersOnly.ToString();<p> textSource.SelectionStart = szNumbersOnly.Length;<p> }

Я ударил этот ответ от Эрин Флек, модератора форума, который ответил это аналогичный вопрос.

@Afnan получает зеленый чек, потому что он / она / она ответил на мой первоначальный вопрос.

...