из дочерней формы в родительскую

В этом примере, пользователь вычисляет в дочерней форме расчет за электроэнергию, сумма одновременно отображается и в дочерней форме и в родительской. Точно так же и с расчетом за воду. В родительской форме эти суммы одновременно складываются.
Скрыть

Показать

Копировать
  Counter.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  •  
  • namespace _0020 {
  •  class Counter {
  •   ushort showStart;
  •   ushort showEnd;
  •   decimal price;
  •   public Counter(string arg0, string arg1, string arg2) {
  •    ushort.TryParse(arg0, out showStart);
  •    ushort.TryParse(arg1, out showEnd);
  •    decimal.TryParse(arg2, out price);
  •   }
  •   public ushort ResultShow() {
  •    return (ushort)(showEnd - showStart);
  •   }
  •   public decimal Sum() {
  •    return Math.Round((decimal)(ResultShow() * price) , 2);
  •   }
  •  }
  • }
Скрыть

Показать

Копировать
  GeneralSum.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  •  
  • namespace _0020 {
  •  class GeneralSum {
  •   public static decimal Add(params string[] args) {
  •    decimal res = 0;
  •     for(int i=0; i<args.Length; i++) {
  •      decimal val;
  •      decimal.TryParse(args[i], out val);
  •      res += val;
  •     }
  •    return Math.Round(res, 2);
  •   }
  •  }
  • }
Скрыть

Показать

Копировать
  Form2Elcectro.cs  
  • 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 _0020 {
  •  public partial class Form2Elcectro : Form {
  •   public Form2Elcectro() {
  •    InitializeComponent();
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    //вычисляем сумму
  •    Counter C = new Counter(textBox1.Text, textBox2.Text, textBox3.Text);
  •    textBox4.Text = C.Sum().ToString();
  •    //создаем переменную класса Form1 и присваиваем ей значение через ссылку
  •    Form1 F1 = (Form1)this.Owner;
  •    //текстовому полю родительской формы присваиваем значение суммы через свойство
  •    F1.TextBox1SumElectro.Text = C.Sum().ToString();
  •   }
  •   private void button2_Click(object sender, EventArgs e) {
  •    //кнопка Очистить очищает все текстовые поля
  •    foreach(Control i in Controls) {
  •     if(i.GetType() == typeof(TextBox)) {
  •      i.Text = string.Empty;
  •     }
  •    }
  •   }
  •  }
  • }
Скрыть

Показать

Копировать
  Form3Water.cs  
  • 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 _0020 {
  •  public partial class Form3Water : Form {
  •   public Form3Water() {
  •    InitializeComponent();
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    //вычисляем сумму
  •    Counter C = new Counter(textBox1.Text, textBox2.Text, textBox3.Text);
  •    textBox4.Text = C.Sum().ToString();
  •    //создаем переменную класса Form1 и присваиваем ей значение через ссылку
  •    Form1 F1 = (Form1)this.Owner;
  •    //текстовому полю родительской формы присваиваем значение суммы через свойство
  •    F1.TextBox1SumWater.Text = C.Sum().ToString();
  •   }
  •   private void button2_Click(object sender, EventArgs e) {
  •    //кнопка Очистить очищает все текстовые поля
  •    foreach(Control i in Controls) {
  •     if(i.GetType() == typeof(TextBox)) {
  •      i.Text = string.Empty;
  •     }
  •    }
  •   }
  •  }
  • }
Скрыть

Показать

Копировать
  Form1.cs  
  • 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 _0020 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •   }
  •   //создаем свойство для доступа к полю из дочерней формы через ссылку
  •   public TextBox TextBox1SumElectro {
  •    set {
  •     textBox1 = value;
  •    }
  •    get {
  •     return textBox1;
  •    }
  •   }
  •   //создаем свойство для доступа к полю из дочерней формы через ссылку
  •   public TextBox TextBox1SumWater {
  •    set {
  •     textBox2 = value;
  •    }
  •    get {
  •     return textBox2;
  •    }
  •   }
  •   private void Form1_Activated(object sender, EventArgs e) {
  •    //при активации формы вычисляется общая сумма
  •    textBox3.Text = GeneralSum.Add(textBox1.Text, textBox2.Text).ToString();
  •   }
  •   private void button3_Click(object sender, EventArgs e) {
  •    //кнопка Очистить очищает все текстовые поля
  •    foreach(Control i in Controls) {
  •     if(i.GetType() == typeof(TextBox)) {
  •      i.Text = string.Empty;
  •     }
  •    }
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    //открываем дочернюю форму и передаем ей ссылку
  •    new Form2Elcectro().ShowDialog(this);
  •   }
  •   private void button2_Click(object sender, EventArgs e) {
  •    //открываем дочернюю форму и передаем ей ссылку
  •    new Form3Water().ShowDialog(this);
  •   }
  •  }
  • }