Using a text event to add / subtract from a text field

I have 6 text fields 2 for each type of account that must be paid:

enter image description here

If I enter a number in one of two, it updates the other with a difference: enter image description here

Panel text fields will always be added to the same amount if you change the value that it automatically changes the value of its adjacent text field, but the RENT text fields are different.

I am trying to make RENT text fields occupy (difference / 2) between three pairs of other text fields. therefore, if patty pays $ 100 more on a water bill than a mike, the microphone must pay $ 100 back on rent, which also deducts 100% of patti's rent.

My current code leads to the following:

enter image description here

, . , , .

    private void txtMikeWater_TextChanged(object sender, EventArgs e)
    {
        double num;
        bool parse = Double.TryParse(txtMikeWater.Text, out num);
        if (txtMikeWater.Focused == true)
            if (parse && num >= 0 && num <= expenses[2])
                txtPattiWater.Text = (expenses[2] - num).ToString();
            else
                textBoxValidator(txtMikeWater, expenses[2], 0);

        double difference = Math.Abs(num - Convert.ToDouble(txtPattiWater.Text)) / 2;
        if (num > Convert.ToDouble(txtPattiWater.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) + difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) - difference).ToString();
        }
        else
            txtPattiRent.Text = ((expenses[0] / 2) - difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) + difference).ToString();
    }

    private void txtMikeElectric_TextChanged(object sender, EventArgs e)
    {
        double num;
        bool parse = Double.TryParse(txtMikeElectric.Text, out num);
        if (txtMikeElectric.Focused)
            if (parse && num >= 0 && num <= expenses[3])
                txtPattiElectric.Text = (expenses[3] - num).ToString();
        double difference = Math.Abs(num - Convert.ToDouble(txtPattiElectric.Text)) / 2;


        if (num > Convert.ToDouble(txtPattiElectric.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) + difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) - difference).ToString();
        }
        else if (num < Convert.ToDouble(txtPattiElectric.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) - difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) + difference).ToString();
        }
    }

    private void txtMikeInternet_TextChanged(object sender, EventArgs e)
    {


        double num;
        bool parse = Double.TryParse(txtMikeInternet.Text, out num);
        if (txtMikeInternet.Focused)
            if (parse && num >= 0 && num <= expenses[1])
                txtPattiInternet.Text = (expenses[1] - num).ToString();
        double difference = Math.Abs(num - Convert.ToDouble(txtPattiInternet.Text)) / 2;


        if (num > Convert.ToDouble(txtPattiInternet.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) + difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) - difference).ToString();
        }
        else if (num < Convert.ToDouble(txtPattiInternet.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) - difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) + difference).ToString();
        }
    }

    private void txtPattiWater_TextChanged(object sender, EventArgs e)
    {

        double num;
        bool parse = Double.TryParse(txtPattiWater.Text, out num);
        if (txtPattiWater.Focused == true)
            if (parse && num >= 0 && num <= expenses[2])
                txtMikeWater.Text = (expenses[2] - num).ToString();
        double difference = Math.Abs(num - Convert.ToDouble(txtMikeWater.Text)) / 2;


        if (num < Convert.ToDouble(txtMikeWater.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) + difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) - difference).ToString();
        }
        else
        {
            txtPattiRent.Text = ((expenses[0] / 2) - difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) + difference).ToString();
        }

    }

    private void txtPattiElectric_TextChanged(object sender, EventArgs e)
    {

        double num;
        bool parse = Double.TryParse(txtPattiElectric.Text, out num);
        if (txtPattiElectric.Focused)
            if (parse && num >= 0 && num <= expenses[3])
                txtMikeElectric.Text = (expenses[3] - num).ToString();
        double difference = Math.Abs(num - Convert.ToDouble(txtMikeElectric.Text)) / 2;
        if (num < Convert.ToDouble(txtMikeElectric.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) + difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) - difference).ToString();
        }
        else if (num > Convert.ToDouble(txtMikeElectric.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) - difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) + difference).ToString();
        }
    }

    private void txtPattiInternet_TextChanged(object sender, EventArgs e)
    {
        double num;
        bool parse = Double.TryParse(txtPattiInternet.Text, out num);
        if (txtPattiInternet.Focused)

            if (parse && num >= 0 && num <= expenses[1])
                txtMikeInternet.Text = (expenses[1] - num).ToString();

        double difference = Math.Abs(num - Convert.ToDouble(txtMikeWater.Text)) / 2;
        if (num < Convert.ToDouble(txtMikeWater.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) + difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) - difference).ToString();
        }
        else if (num > Convert.ToDouble(txtMikeWater.Text))
        {
            txtPattiRent.Text = ((expenses[0] / 2) - difference).ToString();
            txtMikeRent.Text = ((expenses[0] / 2) + difference).ToString();
        }

    }

expenses , .

- , .

EDIT .

expenses[0] = total rent 
expenses[1] = total internet 
expenses[2] = total water
expenses[3] = total electricity
+4
1

, , .

UpdateRent(), , , :

private void txtPattiElectric_TextChanged(object sender, EventArgs e)
{

    double num;
    bool parse = Double.TryParse(txtPattiElectric.Text, out num);
    if (txtPattiElectric.Focused)
        if (parse && num >= 0 && num <= expenses[3])
            txtMikeElectric.Text = (expenses[3] - num).ToString();

    UpdateRent();
}

:

private void UpdateRent()
{
    double pattiPaid = GetPattiWater() + GetPattiElectric() + GetPattiInternet();
    double mikePaid = GetMikeWater() + GetMikeElectric() + GetMikeInternet();

    double difference = pattiPaid - mikePaid;
    double baseRent = GetRequiredMonthlyRent() / 2;

    double pattiRent = baseRent - difference;
    double mikeRent = baseRent + difference;

    txtPattiRent.Text = pattiRent.ToString();
    txtMikeRent.Text = mikeRent.ToString();
}

/ ( ), .

EDIT: , , , . . , , difference . "" , . if , , , .

EDITx2: . GetPattiWater() GetRequiredMonthlyRent() / :

private double GetPattiWater()
{
    double amount;
    Double.TryParse(txtPattiWater.Text, out amount);
    return amount;
}

private double GetRequiredMonthlyRent()
{
    return expenses[3];
}

, // ( 0), .

0

All Articles