производная форма

Внимание!!! Внимание!!! Внимание!!! Внимание!!! Внимание!!! Внимание!!! Внимание!!!
Никогда не используйте производные формы!!!
Могут возникнуть огромные недоразумения!
В этом примере, мы создаем главную форму, на которой будут две кнопки, каждая кнопка будет открывать дочернюю форму. Дочерние формы, практически идентичны. Создаем дочернюю форму. Что бы не создавать второй раз вторую дочернюю форму, можно создать производную форму, которая будет копировать базовую форму. Что бы изменить в производной форме какое либо свойство элемента управления, нужно в базовой форме изменить модификатор доступа c private на protected идентичного элемента. Внимание!!! Перед созданием производной формы, скомпилируйте проект!!!
Главная форма.
Модальная форма.
Внимание!!! Перед созданием производной формы, скомпилируйте проект!!!
Производная форма. Кликните правой мышкой на нашем проекте. Add. New Item. Выберите категорию Windows Forms. Выберите шаблон Inherited Form. Введите имя.
Выбираем базовую форму, которую будем наследовать.
Вот так выглядит эта форма в дизайнере.
Что бы изменить в элементах управления производной формы нужные свойства, необходимо в базовой форме изменить модификатор доступа на protected. Выделите элементы управления в базовой форме и измените модификатор доступа.
Перекомпилируйте проект. Измените значения свойств.
Скрыть

Показать

Копировать
  Counter.cs  
  • using System;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  •  
  • namespace _0015 {
  •  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);
  •   }
  •  }
  • }
Скрыть

Показать

Копировать
  Form2Electro.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 _0015 {
  •  public partial class Form2Electro : Form {
  •   public Form2Electro() {
  •    InitializeComponent();
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    Counter C = new Counter(textBox1.Text, textBox2.Text, textBox3.Text);
  •    textBox4.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.Text;
  • using System.Windows.Forms;
  •  
  • namespace _0015 {
  •  public partial class Form3Water : _0015.Form2Electro {
  •   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();
  •   }
  •   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 _0015 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    new Form2Electro().ShowDialog();
  •   }
  •   private void button2_Click(object sender, EventArgs e) {
  •    new Form3Water().ShowDialog();
  •   }
  •  }
  • }