2013-12-13 52 views
0
`private void Dot_Click_1(object sender, EventArgs e)    
     {   
      if (NumBox1.Text.IndexOfAny(char['.']) 
      { 

      }` 

我認爲限制小數點一位的解決方案就在這裏。c#使用indexofany作爲小數點,並且只限製爲一個小數點

if (!string.IsNullOrEmpty(NumBox1.Text) {
numbox1.text = "0" + "."; } }

這是當文本框爲空。然後我點擊點號自動得到「0」的結果。在文本框內。但是,它只返回「。」

+0

這不是你如何定義'char []'。你需要像'new char [] {'。'}'這樣的東西。雖然在這種情況下,你不需要數組。 – germi

+0

爲了限制爲整數,您可以使用[regex](http://en.wikipedia.org/wiki/Regular_expression)或['Int32.TryParse'](http://msdn.microsoft.com/en-us /library/f02979c7%28v=vs.110%29.aspx)。 – elyashiv

+0

您正在檢查文本是否爲空,如果不是您搜索它。 – elyashiv

回答

1

目前還不清楚爲什麼你得到char['.'],或者你期望它是什麼意思。我懷疑你只是想要字符文字'.'並使用IndexOf

else if (NumBox1.Text.IndexOf('.') == -1 && ...) 

你只想使用IndexOfAny,如果你正在尋找多個的事情,在這種情況下,你想要的東西,如:

IndexOfAny(new[] { '.', ',' }) 

甚至更​​簡單:

else if (!NumBox1.Text.Contains(".") && ...) 

我強烈懷疑你的條件真的不是你想要的 - 基本上現在你會總是將文本框的值設置爲「0」。如果你沒有一個點(忽略任何以前的輸入),並且NumBox1.Text將會從從未null - 但你需要自己解決。

編輯:使用一個電話IndexOf是不會告訴你是否有不止一次出現.。一個簡單的方法是:

if (text.IndexOf('.') != text.LastIndexOf('.')) 
{ 
    ... 
} 
+0

如果我沒有記錯的話,不是說c#用來像提取字符一樣嗎?是「。」一個char或一個int? – MAG

+1

@MAG - '「。」'是'string'。 ''。''是一個'char'。在任何地方都沒有'int'。 – Corak

+0

@MAG:除了Corak的(正確)評論之外,「提取」是什麼意思? –

相關問題