2017-02-19 12 views
0

У меня есть проблема с десятичным вводом, вот код, я использую на кнопке нажатьдесятичного значения дает ошибку

private void button6_Click_1(object sender, EventArgs e) 
    { 
     string PName = "كريب دجاج شاورما"; 
     string PPrice = "20.50"; 
     string PQty = "1"; 

     textBox1.Text = PName; 
     textBox6.Text = PPrice; 
     textBox2.Text = PQty; 
     textBox5.Text = "0"; 
    } 

    private void button7_Click_1(object sender, EventArgs e) 
    { 
     string PName = "كريب تشيكن شريمبو"; 
     string PPrice = "28"; 
     string PQty = "1"; 

     textBox1.Text = PName; 
     textBox6.Text = PPrice; 
     textBox2.Text = PQty; 
     textBox5.Text = "0"; 
    } 

тот с PPrice 20.50, когда нажать он показывает неправильное значение в textbox6 , когда второй с PPrice 28 нажал, он продолжает нормально

Как я могу исправить это, чтобы он принял десятичные знаки?

UPDATE

предыдущий код не проблема, реальная проблема с этим кодом, он показывает ошибку, когда расчеты сделаны не на самой так вот текстовое поле полный код

private void button6_Click_1(object sender, EventArgs e) 
    { 
     string PName = "كريب دجاج شاورما"; 
     string PPrice = "20.50"; 
     string PQty = "1"; 

     textBox1.Text = PName; 
     textBox6.Text = PPrice; 
     textBox2.Text = PQty; 
     textBox5.Text = "0"; 
    } 

    private void button7_Click_1(object sender, EventArgs e) 
    { 
     string PName = "كريب تشيكن شريمبو"; 
     string PPrice = "28"; 
     string PQty = "1"; 

     textBox1.Text = PName; 
     textBox6.Text = PPrice; 
     textBox2.Text = PQty; 
     textBox5.Text = "0"; 
    } private void textBox3_TextChanged(object sender, EventArgs e) 
    { 

     Multiply(); 
    } 

    private void textBox6_TextChanged(object sender, EventArgs e) 
    { 
     int first = 0; 
     int second = 0; 
     if (Int32.TryParse(textBox5.Text, out second) && Int32.TryParse(textBox6.Text, out first)) 
      textBox3.Text = (first + second).ToString(); 
    } 

    private void textBox5_TextChanged(object sender, EventArgs e) 
    { 
     int first = 0; 
     int second = 0; 
     if (Int32.TryParse(textBox5.Text, out second) && Int32.TryParse(textBox6.Text, out first)) 
      textBox3.Text = (first + second).ToString(); 
    } 
+0

Какой textBox6 это? – AlirezaJ

+1

Речь идет не о показе «десятичных знаков», потому что в обоих случаях значение, присвоенное '.Text', является строкой. Пожалуйста, медленно отлаживайте и действительно видите, что вызывается ожидаемая функция. Также, когда вы говорите «недопустимое значение», что вы имеете в виду? –

+0

ОК, нажатие кнопки, информация поступает в текстовые поля, за исключением десятичного, дает «Недопустимый», затем нажимается кнопка, чтобы добавить их в список, и вот что я получаю при отладке Необработанное исключение типа «Исправление System.FormatException» произошло в mscorlib .dll Дополнительная информация: Строка ввода не была в правильном формате. –

ответ

2

Вы получаете ошибку, потому что пытаетесь преобразовать строку с десятичными точками в целое число.

У вас есть этот код:

string PPrice = "20.50"; 
textBox6.Text = PPrice; 

Тогда у вас есть этот код:

int first = 0; 
int second = 0; 
if (Int32.TryParse(textBox5.Text, out second) && Int32.TryParse(textBox6.Text, out first)) 
      textBox3.Text = (first + second).ToString(); 

Int.TryParse(textbox6.Text, out first терпит неудачу и возвращает false потому 20.50 не может быть преобразован в integer.

Вам нужно разобрать значение в десятичное и если это удастся, то продолжить:

decimal pPrice; 

if (decimal.TryParse(textbox6.Text, out pPrice)) 
{ 
    // do what you need 
} 
else 
{ 
} 
+0

Спасибо, испытал и отлично работает, решил мне проблему –