C # вычитание введенного значения текстового поля к значению метки - PullRequest
0 голосов
/ 13 сентября 2018

Я создаю это приложение POS для настольных ПК в форме Windows, и оно почти готово, но у меня возникают проблемы с обработкой счетов клиентов.

Конкретно:
SIMSProduct Usercontrol

  • cart.lbl_price.Text = lbl_totalprice.Text;
    Сначала общая сумма покупок покупателя указывается в lbl_totalprice.Text
    Затем эта сумма используется в форме ProcessCart, которой является cart.lbl_price.Text
  • lbl_price.Text теперь успешно получает значение lbl_totalprice.Text

Форма ProcessCart

  • txt_amount (Textbox) - это место, где пользователь вводит значение платежа клиентаэто должно быть вычтено к lbl_price.Text, который является ошибочным.
  • lbl_totalprice.Text соответствует выходу вычтенных lbl_price и txt_amount, который тоже не выполняется

Примечание: lbl соответствует WindowsЯрлык формы

Проблема в том, что когда я пытался ввести свой txt_amount, скажем, я ввел 5000, а 5000 не вычитает значениеlbl_price, также lbl_totalprice равно тому, что я печатаю в txt_amount.Ниже этого кода Что я сделал не так? Что-то, что я не должен делать?или я что то забыл?Я надеюсь, что кто-то сможет помочь в этом вопросе.Спасибо

    public partial class SIMSProduct : UserControl
{
    ITEMCount item;
    ProcessCart cart;
    public SIMSProduct()
    {
        InitializeComponent();         
    }

 private void btn_process_Click(object sender, EventArgs e)
    {
        cart = new ProcessCart();
        cart.Show();
        cart.lbl_price.Text = lbl_totalprice.Text; 
    }
}

public partial class ProcessCart : Form
{     
    public ProcessCart()
    {
        InitializeComponent();
    }
 private void txt_amount_TextChanged(object sender, EventArgs e)
    {
        int value1;
        int value2;
        decimal value3;
        if (int.TryParse(lbl_price.Text.Trim(), out value1))
        {
            Total = Convert.ToInt32(lbl_price.Text);            
        }
        if (int.TryParse(txt_amount.Text.Trim(), out value2))
        {

            Paid = Convert.ToInt32(txt_amount.Text);          
        }
        lbl_totalprice.Text = (Paid - Total).ToString();
}

1 Ответ

0 голосов
/ 13 сентября 2018

Я думаю, что ваша проблема - проблема кастинга.Похоже, вы пытаетесь привести десятичное значение к целому числу.Попробуйте заменить на этот код.

    public partial class SIMSProduct : UserControl
{
    ITEMCount item;
    ProcessCart cart;
    public SIMSProduct()
    {
        InitializeComponent();         
    }

 private void btn_process_Click(object sender, EventArgs e)
    {
        cart = new ProcessCart();
        cart.Show();
        cart.lbl_price.Text = lbl_totalprice.Text; 
    }
}

public partial class ProcessCart : Form
{     
    public ProcessCart()
    {
        InitializeComponent();
    }
 private void txt_amount_TextChanged(object sender, EventArgs e)
    {
        decimal value1;
        decimal value2;
        decimal value3;
        if (decimal.TryParse(lbl_price.Text.Trim(), out value1))
        {
            Total = Convert.ToDecimal(lbl_price.Text);            
        }
        if (decimal.TryParse(txt_amount.Text.Trim(), out value2))
        {

            Paid = Convert.ToDecimal(txt_amount.Text);          
        }
        if (decimal.TryParse(lbl_totalprice.Text.Trim(), out value3))
        {
            Change = Convert.ToDecimal(lbl_totalprice.Text);
        }
        Change = Paid - Total;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...