2017-09-26 89 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); 

如果所有這些轉換會成功,然後計算繼續進行。

相關問題