c#强制数字更新只接受try-parse的正整数

时间:2012-10-04 20:28:29

标签: c# integer numeric updown

我这几天只做了这件事,我很困惑。

其他一切正常,框只显示整数,但仍然用十进制值计算。

3 个答案:

答案 0 :(得分:3)

您应该能够int myInt = Convert.ToInt32(numBox.Value);

numBox.Value是一个小数,但该代码会导致它转换为整数。

只要知道如果你得到一个十进制值,它就会向上或向下舍入。

编辑: 如果你只想要积极的价值观,Aghilas Yakoub的解决方案可能会更好。我的解决方案将十进制转换为int,但它仍然可以允许负数。真正应该做的是将numBox.Minimum设置为0,使其不能低于0.

编辑2: 如果您想在值为负数时发出警告,请尝试以下操作:

int myInt = Convert.ToInt32(numBox.Value);
if (myInt < 0)
{
    MessageBox.Show("Warning, your number must be 0 or greater");
}

如果值不是整数(有小数值),是否要警告?

答案 1 :(得分:0)

您可以尝试使用

UInt32 result = 0;

UInt32.TryParse("...",
                new CultureInfo(""),
                out result);

if(result == 0)
{
  Console.WriteLine("No parsing");
}
else
{
 Console.WriteLine("result={0}", result);
}

答案 2 :(得分:-1)

更优雅的解决方案是:

如果您可以访问 DevExpress 控件,则应使用SpinEdit控件。 要将其范围限制为0到999(仅整数),请将其设置为:

  • Properties.Mask.EditMask&#34; ## 0;&#34;
  • Properties.MaxValue 999

然后以下行应该没有例外:

int myInt = Convert.ToInt32(numBox.Value);