Как автоматически изменить текстовое поле при изменении другого текстового поля? - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть эти текстовые поля с именем сумки, тариф, количество, размер упаковки и количество, что я хочу сделать, чтобы при вводе сумок, а также тариф и размер упаковки текстовое поле количества автоматически отображало соответствующее количество и количество, но в моем случае, когдаЯ нажимаю кнопку «Рассчитать», затем она вычисляет и показывает количество и сумму, которые я пробовал, используя событие с измененной текстовой информацией, но не выполняет свою работу?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Login
{
    public partial class Sale : Form
    {
        SaleCalci sale;
        SaleBillheader SaleHeaderModel = new SaleBillheader();
        tbl_SaleBillDetails SaleDetailModel = new tbl_SaleBillDetails();



        public Sale()
        {
            InitializeComponent();
        }

        private void Cancelbtn_Click(object sender, EventArgs e)
        {
            clear();
        }

        private void clear()
        {
            txtBillNo.Text = txtDesc.Text = "";
            txtBags.Text = txtQty.Text = txtRate.Text = txtAmt.Text = "0.00";
            if(txtQty.Text !=null &&  txtAmt.Text !=null )
            {
                txtQty.Text = "0.00";
                txtAmt.Text = "0.00";
            }
            Savebtn.Text = "Save";
            SaleHeaderModel.SaleBillHeaderId = 0;
            SaleDetailModel.SaleBill_Id = 0;
        }

        private void Exitbtn_Click(object sender, EventArgs e)
        {
           var result =  MessageBox.Show("Are you sure you want to close this form ?", "Confirm", MessageBoxButtons.YesNo);
           if (result == DialogResult.Yes)
           { this.Close(); }


        }

        private void Sale_Load(object sender, EventArgs e)
        {
            ItemCombo();
            PartyCombo();
            PackingSizeCombo();

           // clear();
        }

        private void ItemCombo()
        {
            UserDataEntities db = new UserDataEntities();
            Itembox.DataSource = db.tbl_ItemId.ToList();
            Itembox.ValueMember = "ItemId";
            Itembox.DisplayMember = "ItemName";

        }
        private void PartyCombo()
        {
            UserDataEntities db = new UserDataEntities();
            PartyBox.DataSource = db.tbl_Parties.ToList();
            PartyBox.ValueMember = "Id";
            PartyBox.DisplayMember = "PartyName";

        }
        private void PackingSizeCombo()
        {
            UserDataEntities db = new UserDataEntities();
            PackingBox.DataSource = db.PackingSizes.ToList();
            PackingBox.ValueMember =  "PackingSizeId";
            PackingBox.DisplayMember = "PackingSize1";
        }

        private void Savebtn_Click(object sender, EventArgs e)
        {
            CalculateAmount();
            DisplayAmt();
        }
        private void CalculateAmount()
        {
            int bags = 0;
            decimal rate = 0;
            int pksize = 0;

            bags = Convert.ToInt32(txtBags.Text);
            rate = Convert.ToDecimal(txtRate.Text);
            pksize = Convert.ToInt32(PackingBox.Text);

            sale = new SaleCalci(bags,rate, pksize);

            //sale.Bags = Convert.ToInt32(txtBags.Text);
            //sale.Rate = Convert.ToDecimal(txtRate.Text);


            //SaleDetailModel.Bags = int.Parse(txtBags.Text.Trim());
            //SaleDetailModel.Qty = Convert.ToDecimal(txtQty.Text.Trim());
            //SaleDetailModel.Rate = Convert.ToDecimal(txtRate.Text.Trim());
           // SaleDetailModel.Amount = amount;






        }

        private void txtAmt_TextChanged(object sender, EventArgs e)
        {
           // txtAmt.Text = sale.CalucalteAmt.ToString();
        }

        private void Sale_Click(object sender, EventArgs e)
        {
            if ((txtBags.Text == "0.00") && (txtQty.Text == "0.00")&&(txtRate.Text == "0.00")&& (txtAmt.Text =="0.00"))
            {
                txtAmt.Clear();
                txtBags.Clear();
                txtQty.Clear();
                txtRate.Clear();
            }
        }

        private void txtQty_TextChanged(object sender, EventArgs e)
        {

            DisplayAmt();

        }

        private void txtBags_TextChanged(object sender, EventArgs e)
        {

           // sale.Bags = Convert.ToInt32(txtBags.Text);
           // DisplayAmt();
        }

        private void PackingBox_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void txtRate_TextChanged(object sender, EventArgs e)
        {

           // DisplayAmt();
        }

        private void DisplayAmt()
        {
            decimal _amt = sale.CalucalteAmt;
            txtQty.Text = sale.CalculateQty().ToString();
            txtAmt.Text = _amt.ToString();

        }


    }


}

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вам необходимо вызвать DisplayAmt в событии TextChanged для txtBags, txtRate и Size.В приведенном выше коде вызов DisplayAmt закомментирован.Вместо этого вы вызываете DisplayAmt в событии TextChanged в txtQty.

Вместо этого вы должны делать.

private void txtAmt_TextChanged(object sender, EventArgs e)
{
   DisplayAmt();
}

private void txtRate_TextChanged(object sender, EventArgs e)
{
   DisplayAmt();
}

Аналогично, вам нужно добавить событие Changed для Text Control для размера.TxtQty обновляется методом DisplayAmt ().Так что вам это не обязательно, если только по причинам, не указанным в OP.

0 голосов
/ 18 декабря 2018

Обычно событие «TextChanged» запускается автоматически, если текстовое значение изменяется.

Итак, проблема в том, что я думаю о вашем другом «частичном классе», в котором должна существовать работа обработчика событий.Что-то вроде:

txtBags.TextChanged += new EventHandler(txtBags_TextChanged);

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

Этот обработчик событий иногда исчезает из проекта, если вы перемещаете элементы графического интерфейса или по каким-либо другим причинам ...

Вы можете прочитать это утверждение вручную.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...