如何在「。」之前只留下一個「0」? 「」我做TextBox
其只接受數字,你只能一個「0」之前寫的,但你可以寫像900或5000「」之前只有一個「0」。 in textBox_TextChanged
這裏的任何數字是僞代碼我使用:
if (0 > 1 before "." && 0 is first digit)
{
Remove all zeros before "." and left one;
}
如何在「。」之前只留下一個「0」? 「」我做TextBox
其只接受數字,你只能一個「0」之前寫的,但你可以寫像900或5000「」之前只有一個「0」。 in textBox_TextChanged
這裏的任何數字是僞代碼我使用:
if (0 > 1 before "." && 0 is first digit)
{
Remove all zeros before "." and left one;
}
最簡單的方法可能是將所有的0時開始;
textbox.Text = textbox.Text.TrimStart('0');
然後如果它以'。'開頭。再次在開頭添加'0'。
if (textbox.Text.StartsWith('.'))
textbox.Text = '0' + textbox.Text;
這也將在年初刪除任何0,例如「00500」,將其更改爲「500」,這可能是一件好事。
使用這樣
for (int i=0;i<textbox.Text.Length;i++)
{
textbox.Text=textbox.Text.Replace("00.","0.")
}
這不會刪除所有的零,除非你以相反的順序循環。 –
Dude它不工作:(當我寫200.5它刪除最後零:DI只能寫一個零之前任何數字:D – Ovidzikas
我不明白什麼循環是在那裏? –
繼承TextChanged事件有一些缺點。例如,用戶可能想要輸入零,然後在數字(。)符號前加上零。輸入數字前,您的代碼會刪除所有前導零。最好使用其他事件,如驗證或LostFocus。代碼將會非常簡單:
textbox.Text = textbox.Text.TrimStart('0');
您可以使用NumericUpDown控制僅用於數字輸入。它將驗證文本是否爲數字並根據像DecimalPlaces這樣的設置進行格式化。
也許這可以幫助:
public string ZeroPoint(string a)
{
int pos = a.IndexOf(".");
if (pos > -1 && a.Substring(0, pos) == new string('0', pos))
{
a = "0" + a.Substring(pos, a.Length - pos);
}
return a;
}
您需要使用KeyPress
事件,並添加下面的邏輯來確定被壓什麼和在哪裏輸入值將被放置。
當您將e.Handled
值設置爲true時,您告訴系統忽略用戶輸入。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Only allow digits, decimal points and control characters (Backspace, delete, etc)
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
(e.KeyChar != '.'))
{
e.Handled = true;
}
int PointIndex = (sender as TextBox).Text.IndexOf('.');
// only allow one decimal point and one digit before decimal point
if (((e.KeyChar == '.') && PointIndex > -1) ||
(e.KeyChar == '.' && textBox1.SelectionStart > 1) ||
(PointIndex == 1 && textBox1.SelectionStart <= PointIndex))
{
e.Handled = true;
}
}
此代碼驗證用戶在輸入時的輸入。
編輯:
此外,由於該代碼只驗證輸入的用戶輸入時,你也會想,以防止他們在無效值粘貼。您可以通過將文本框的ShortcutsEnabled
屬性設置爲false來執行此操作。
但如果我在這個文本框中粘貼一些文本,它不會在''之前修剪所有的零。 – Ovidzikas
發佈您當前用於限制數字的代碼。 – CathalMF
if(0> 1在「。」&& 0之前是第一位數字) { 刪除「。」之前的所有零。並留下一個; } – Ovidzikas
嘗試使用'NumericUpDown'或'MaskedTextBox' –