2016-04-10 21 views
-1

如何在「。」之前只留下一個「0」? 「」我做TextBox其只接受數字,你只能一個「0」之前寫的,但你可以寫像900或5000「」之前只有一個「0」。 in textBox_TextChanged

這裏的任何數字是僞代碼我使用:

if (0 > 1 before "." && 0 is first digit) 
{ 
    Remove all zeros before "." and left one; 
} 

+1

發佈您當前用於限制數字的代碼。 – CathalMF

+0

if(0> 1在「。」&& 0之前是第一位數字) { 刪除「。」之前的所有零。並留下一個; } – Ovidzikas

+1

嘗試使用'NumericUpDown'或'MaskedTextBox' –

回答

0

最簡單的方法可能是將所有的0時開始;

textbox.Text = textbox.Text.TrimStart('0'); 

然後如果它以'。'開頭。再次在開頭添加'0'。

if (textbox.Text.StartsWith('.')) 
    textbox.Text = '0' + textbox.Text; 

這也將在年初刪除任何0,例如「00500」,將其更改爲「500」,這可能是一件好事。

0

使用這樣

for (int i=0;i<textbox.Text.Length;i++) 
{ 
    textbox.Text=textbox.Text.Replace("00.","0.") 
} 
+0

這不會刪除所有的零,除非你以相反的順序循環。 –

+0

Dude它不工作:(當我寫200.5它刪除最後零:DI只能寫一個零之前任何數字:D – Ovidzikas

+0

我不明白什麼循環是在那裏? –

0

繼承TextChanged事件有一些缺點。例如,用戶可能想要輸入零,然後在數字(。)符號前加上零。輸入數字前,您的代碼會刪除所有前導零。最好使用其他事件,如驗證或LostFocus。代碼將會非常簡單:

textbox.Text = textbox.Text.TrimStart('0'); 

您可以使用NumericUpDown控制僅用於數字輸入。它將驗證文本是否爲數字並根據像DecimalPlaces這樣的設置進行格式化。

0

也許這可以幫助:

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; 
} 
0

您需要使用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來執行此操作。

+0

但如果我在這個文本框中粘貼一些文本,它不會在''之前修剪所有的零。 – Ovidzikas

相關問題