无法投型“system.windows.forms.textbox”的对象键入“System.IConvertible”为C#的形式
问题描述:
的错误,我这里有这样的代码,但我不断收到同样的错误。有人能告诉我我做错了什么吗?无法投型“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;
}
答
看着你的代码我相信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。
答
你的错误来自试图将一个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);
如果所有这些转换会成功,然后计算继续进行。
请不要试图解释错误信息。从调试器复制消息,[编辑](https://stackoverflow.com/posts/46437200/edit)你的问题并粘贴进去。 –
'textBox1.Text' !!!!!而不是'textBox1' – Transcendent