[英]Sensing a decimal in a textBox
我正在為 Windows 手機開發一種計算器。
它不需要使用小數。 (誰需要.39的一塊磚)
我如何檢測到字符串或文本框中有小數點?
編輯:謝謝@Bala R 和@Afnan。 但我所追求的也是過濾掉字母的東西。 我的答案在下面。
修改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);
}
這將刪除在寫入輸入時輸入的無效字符
您可以使用它來查看字符串中是否有“句點”
bool hasDecimal = textBox.Text.Contains(".")
但是對於十進制值來說,不止一個句點是不好的。
我認為您需要檢查該值是否為有效的十進制值。
使用TryParse方法:
decimal value;
string textValue = textBox.Text;
bool isDecimal = decimal.TryParse(textValue, out value)
這是我發現效果最好的方法:
bool bNeedToUpdate = false;
StringBuilder szNumbersOnly = new StringBuilder();
TextBox textSource = sender as TextBox;
if (null == textSource)
return;
foreach (char ch in textSource.Text)
{
if (("0123456789").Contains(ch.ToString()))
{
szNumbersOnly.Append(ch);
}
else
{
bNeedToUpdate = true;
}
}
if (bNeedToUpdate)
{
textSource.Text = szNumbersOnly.ToString();
textSource.SelectionStart = szNumbersOnly.Length;
}
我從回答了這個類似問題的論壇版主 Erin Fleck 上刷了這個答案。
@Afnan 獲得綠色支票,因為他/她/它回答了我最初的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.