C# 输入字符串的格式不正确,行

C# 输入字符串的格式不正确,行,c#,C#,好的,我修正了这个错误,但是每次我输入一个数字,消息框就会显示你不能输入这个数字,即使d=5.0/1=0和d=0.75/1=0.75,我也不知道为什么 任何帮助都将不胜感激这是因为您试图将字符串转换为整数,但遇到异常。 Convert类不处理异常。您应该使用int.TryParse而不是Convert.ToInt32,因为TryParse不会压碎您的程序,您可以相应地处理格式错误。仅当您100%确定输入可以转换时,才使用Convert 差不多 private void textBox4_Text

好的,我修正了这个错误,但是每次我输入一个数字,消息框就会显示你不能输入这个数字,即使d=5.0/1=0和d=0.75/1=0.75,我也不知道为什么

任何帮助都将不胜感激

这是因为您试图将字符串转换为整数,但遇到异常。
Convert
类不处理异常。您应该使用
int.TryParse
而不是
Convert.ToInt32
,因为
TryParse
不会压碎您的程序,您可以相应地处理格式错误。仅当您100%确定输入可以转换时,才使用
Convert

差不多

private void textBox4_TextChanged(object sender, EventArgs e)
    {
        Double d;
        if (!string.IsNullOrWhiteSpace(textBox4.Text))
        {
            d = Convert.ToDouble(textBox4.Text);
            var c = d / 1;

            if (c == 0.75)
            {


                string myString = c.ToString();


            }
            else if (c == 0.25)
            {  }
            else if (c == 0.50) {  }
            else if (c == 0.00) { }
            else { MessageBox.Show("you can't enter this"); }
        }
    }
编辑:我刚刚检查了您是否希望与
.75
进行比较,结果如下

if(int.TryParse(textBox4.Text,out d))
{
    //continue with your code
}
else
{
    //print something like 'that was not a number'
}

给猫剥皮的方法有很多:

private void textBox4_TextChanged(object sender, EventArgs e)
{

        double d;
        double yourValue = 0.75d; // or whatever value you want
        if(Double.TryParse(textBox4.Text,out d))
            if(d == yourValue)
                MessageBox.Show(d.ToString);
        else
            MessageBox.Show("Not a number"); // or do nothing, whatever you want 


}
当我写这篇文章的时候,我看到对话还在继续。。。double还有一个try parse方法:

string s = "3"; // you should have your text here
int i ;

// Cannot implicitly convert type 'int' to 'string'
// i=s; 

//The as operator must be used with a reference type or nullable type ('int' is a non-nullable value type)
//i = s as int; 

// OK
i = Convert.ToInt32(s);

// Ok, but if s is not number, will throw an exception
i = Int32.Parse(s)

// OK, try_parse will be true, and i will hold the value
// or try_parse will be false, and i will not be set
bool try_parse = Int32.TryParse(s, out i);

然后我需要将我的textbox4值转换为double,怎么做

您可以使用显式调用的方法。在这里如何使用这种方法

这个
Double.Parse(string,CurrentCulture)
as

是一种复合样式,包括
AllowDecimalPoint
样式。您没有告诉我们您的线程区域性是什么,但如果您当前的线程区域性是点(
),则可以使用此方法


如果不是,您可以直接使用带有点(
)的格式作为十进制分隔符,例如。

在texbox4中输入的值出现错误时,您可以使用Int32.TryParse()来避免错误当我尝试输入.75时,当我使用Int32.TryParse()时代码它给了我一个错误:没有重载方法“TryParse”接受1个参数,比如
int num=0;Int32.TryParse(textBox4.Text,out num)
.75
不是整数。它是
double
然后我需要将我的textbox4值转换为double,怎么做?这并不能解决为什么他的输入不能转换为整数的根本问题。当我使用你的Int.TryParse()时代码给了我一个错误:“TryParse”方法没有重载1个参数显示我可以比较0.75和我在textbox4中输入的输入吗?因为我不能用==((c==.75))比较double。你可以比较它们,但比较浮点数时不是100%准确,这是因为你输入的不是你接受的4个值中的任何一个。
public static double Parse(String s, IFormatProvider provider)
{
     return Parse(s, NumberStyles.Float| NumberStyles.AllowThousands, 
                     NumberFormatInfo.GetInstance(provider));
}
public static double ToDouble(String value)
{
      if (value == null)
          return 0;
      return Double.Parse(value, CultureInfo.CurrentCulture);
}
public static double Parse(String s, IFormatProvider provider)
{
     return Parse(s, NumberStyles.Float| NumberStyles.AllowThousands, 
                     NumberFormatInfo.GetInstance(provider));
}
string text = "5.0"; // or 5.0 or .75 or 23 or ..
string err = "input is not a number!";

if (string.IsNullOrWhiteSpace(text))
{
MessageBox.Show(err);

return;
}

Double d;

// using CultureInfo.InvariantCulture - assuming that decimal point will always be "."
if (!Double.TryParse(text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d))
{
MessageBox.Show(err);

return;
}

// at this point there is a "d" variable 100% a number, do whatever you want with it
// AND BTW 5.0/1 = 5.0, not 0 !!

MessageBox.Show(d.ToString());

var c = d / 1; //WHY is this there? Every number (even negative number) divide by 1 is the same  number, not matter if it is 4 or 100565.432345 or googol ;)

string myString = String.Empty;

if (c == 0.75)
myString = c.ToString();
else if (c == .25)
myString = c.ToString();
else if (c == .5)
myString = c.ToString();

// etc, etc.. don't know your use case