2017-09-26 88 views
-1

的错误,我这里有这样的代码,但我不断收到同样的错误。有人能告诉我我做错了什么吗?无法投型“system.windows.forms.textbox”的对象键入“System.IConvertible”为C#的形式

private void button1_Click(object sender, EventArgs e) 
{ 
    double gallonsToBuy;//for equation 
    double WALL_LENGTH; //holds wall length 
    double WALL_HEIGHT; //holds wall height 
    int NUM_DOORS; //holds number of doors 
    int NUM_WINDOWS; //holds number of windows 
    int NUM_COATS; //holds number of coats of paint 
    const double GALLON_SF = 350; //one gallon covers 350 square feet 

    //allows user to input their numbers 
    WALL_LENGTH = Convert.ToDouble(textBox1); 
    WALL_HEIGHT = Convert.ToDouble(textBox2); 
    NUM_DOORS = Convert.ToInt32(textBox3); 
    NUM_WINDOWS = Convert.ToInt32(textBox4); 
    NUM_COATS = Convert.ToInt32(textBox5); 

    //Equation 
    gallonsToBuy = ((((WALL_LENGTH * WALL_HEIGHT) - (20 * NUM_DOORS) - (15 * NUM_WINDOWS)) * NUM_COATS) /350); 

    label7.Text = "Gallons to buy =" +gallonsToBuy; 
} 
+0

请不要试图解释错误信息。从调试器复制消息,[编辑](https://stackoverflow.com/posts/46437200/edit)你的问题并粘贴进去。 –

+0

'textBox1.Text' !!!!!而不是'textBox1' – Transcendent

回答

1

看着你的代码我相信textBox1,textBox1等都是TextBox控件。您不能将控制类型转换为数据类型。您需要使用属性.text来访问控件中的值。

WALL_LENGTH = Convert.ToDouble(textBox1.Text); 
    WALL_HEIGHT = Convert.ToDouble(textBox2.Text); 
    NUM_DOORS = Convert.ToInt32(textBox3.Text); 
    NUM_WINDOWS = Convert.ToInt32(textBox4.Text); 
    NUM_COATS = Convert.ToInt32(textBox5.Text); 

确保你有一个价值的输入字段,否则将通过投误差试图从转换的String.Empty。

2

你的错误来自试图将一个TextBox转换为double

WALL_LENGTH = Convert.ToDouble(textBox1); 

TextBox是一个.NET对象类型,你不能做一个有意义的转换为双。你必须做的是将TextBox.Text财产的价值转换为double

WALL_LENGTH = Convert.ToDouble(textBox1.Text); 

但仅有这仍然是问题,而且容易出错,如果用户输入无法转换为double文本。

所以,你应该,另外,用正确的方法来转换,如int.TryParse()double.TryParse()

例如,

double WALL_LENGTH; 
double.TryParse(textBox1.Text, out WALL_LENGTH); 

如果所有这些转换会成功,然后计算继续进行。

相关问题