2015-02-11 77 views
-3

我試圖用C#編寫一個程序,允許用戶輸入已售座位的數量,然後該程序按價格乘以每個數字,以獲得每個部分有多少個樹枝。我得到了最後的結果,但他的程序不工作,因爲texbox.toString部分下方的紅線。有人能幫助我知道我的錯誤是什麼嗎?爲什麼我不斷收到這些錯誤?

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void label7_Click(object sender, EventArgs e) 
    { 

    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     textBox4.Text = ""; 
     textBox3.Text = ""; 
     textBox2.Text = ""; 
     total.Text = ""; 
     input1.Text = ""; 
     input2.Text = ""; 
     input3.Text = ""; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     int input1; 
     int input2; 
     int input3; 

     input1 = int.Parse(input1.ToString()); 
     input2 = int.Parse(input2.ToString()); 
     input3 = int.Parse(input3.ToString()); 

     int sum1 = input1 * 15; 
     int sum2 = input2 * 12; 
     int sum3 = input3 * 9; 

     sum1 = textBox3.ToString(); 
     sum2 = textBox2.ToString(); 
     sum3 = textBox4.ToString(); 
    } 
} 
+0

你的意思是使用'textbox.Text'來代替嗎? – 2015-02-11 04:17:18

+0

我建議使用** NumericUpDown **控件輸入數字數據。這將阻止你每次在這裏和那裏進行類型轉換。 – 2015-02-11 04:34:54

+1

你正在使用'未分配的本地變量'輸入1 ...'因爲你定義'int input1'與你的文本框名稱'input1'相同,試試我的回答中提出的解決方案 – chouaib 2015-02-11 04:42:58

回答

1

獲得寫在你的文本框中string

textBox.Text; 

在框中顯示的值sum

textBox.Text = sum.ToString(); 

這是怎麼button1_Click會是什麼樣至少:

private void button1_Click(object sender, EventArgs e) 
{ 
    int in1; // change int names to not confuse woth textboxes 
    int in2; 
    int in3; 

    in1 = int.Parse(input1.Text); // input1 is textBox 
    in2 = int.Parse(input2.Text); 
    in3 = int.Parse(input3.Text); 

    int sum1 = in1 * 15; 
    int sum2 = in2 * 12; 
    int sum3 = in3 * 9; 

    textBox3.Text = sum1.ToString(); 
    textBox2.Text = sum2.ToString(); 
    textBox4.Text = sum3.ToString(); 

} 
+1

你不需要.ToString()在Text之後,因爲它已經是一個字符串了。 – 2015-02-11 04:19:52

+0

這是正確的@AnimalStyle,我只是重新檢查代碼,它似乎他得到了一些其他問題 – chouaib 2015-02-11 04:21:13

0

你可以只使用

int.Parse(textbox.Text); 
+0

我使用該行,現在在我的輸入行「input1 = int.Parse(input1.ToString());」輸入...在括號中是說「使用未分配的本地變量」輸入...' – Niomi 2015-02-11 04:36:06

+0

@chouaib我認爲現在有一個完整的解決方案。 – 2015-02-11 04:44:40

+0

@Niomi:檢查我的答案 – chouaib 2015-02-11 04:55:08

0

sum是一個整數,但textBox.ToString()是一個字符串。你可以不是一個字符串分配到一個整數

應該

textBox3.Text = sum1.ToString();

0

的問題發生,因爲你正試圖爲一個字符串的值存儲到一個int。

線:

sum = textBox.ToString(); 

textBox的值只是轉換爲字符串,而不是在textBox的文本的值,並將它傳遞到sum變量。這是行不通的。

試試這個:

sum = Convert.ToInt32(textBox.Text); 

但是,如果你想顯示在textBoxsum的價值,你可以隱式地從一個int轉換爲字符串:

textBox.Text = sum; 
0

改爲使用文本框控件的「文本」屬性。最好是將它作爲「input1.Text.Trim()」之類的東西,因爲這會去除意外進入輸入的任何前導/尾隨空格。

作爲一種最佳實踐,特別是從UI中的文本控件獲取值時,最好使用Int32.TryParse。 (請參閱:Parse v. TryParse

另外一點,您的代碼不遵循基本的命名約定。

相關問題