2013-12-13 21 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的(正确)评论之外,“提取”是什么意思? –

相关问题