2015-02-11 5 views
-3

Я пытаюсь написать программу на C#, которая позволяет пользователю вводить количество проданных мест, тогда программа умножает каждое число на цену, чтобы узнать, сколько из них было в каждой секции. Ive добрался до конца, но программа не работает из-за красной линии под частью 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'? –

+0

Я бы рекомендовал использовать ** NumericUpDown ** для ввода числовых данных. Это предотвратит вас при типизации каждый раз, когда вы делаете здесь и там. –

+1

вы получаете '' использование непризнанной локальной переменной_input1 ...'потому что вы определяете' int input1' так же, как имя вашего текстового поля 'input1', попробуйте решение, предложенное в моем ответе – chouaib

ответ

1

для получения string написано в вашем TextBox:

textBox.Text; 

для отображения значения sum в TextBox:

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, потому что это уже строка. –

+0

это правильно @AnimalStyle, я только что проверил код, и, похоже, он получил некоторые другие проблемы. – chouaib

0

Вы можете использовать только

int.Parse(textbox.Text); 
+0

Я использовал эту строку и теперь в моих входных строках «input1 = int.Parse (input1.ToString()); вход ... в круглых скобках говорит «использование неназначенной локальной переменной» вход ... » – Niomi

+0

@chouaib Я думаю, что теперь есть полное решение. –

+0

@Niomi: проверьте мой ответ – chouaib

0

sum является целым числом, но textBox.ToString() является строкой. Вы не можете присвоить строку в целое число

должно быть

textBox3.Text = sum1.ToString();

0

Проблема происходит потому, что вы пытаетесь сохранить значение строки в междунар.

Линия:

sum = textBox.ToString(); 

просто преобразование значения textBox в строку, а не значение текста вtextBox, и передать его в переменную sum. Это не сработает.

Попробуйте вместо этого:

sum = Convert.ToInt32(textBox.Text); 

Однако, если вы хотите, чтобы показать значение sum в textBox, вы можете неявно преобразовать из междунар в строку:

textBox.Text = sum; 
0

Вместо этого используйте свойство «Текст» элемента управления текстовым полем. Было бы лучше иметь его как нечто вроде «input1.Text.Trim()», поскольку это приведет к удалению каких-либо ведущих/конечных пробелов, случайно попавших во вход.

Как наилучшая практика, особенно при получении значений из текстовых элементов управления в пользовательском интерфейсе, хорошо использовать Int32.TryParse. (См.: Parse v. TryParse)

В качестве дополнительного пункта ваш код не соответствует основным соглашениям об именах.