![](/user_photo/_userpic.png)
- •Лабораторная работа № 1
- •Лабораторная работа № 2
- •InitializeComponent();
- •Лабораторная работа № 3
- •InitializeComponent();
- •Лабораторная работа № 4
- •InitializeComponent();
- •Лабораторная работа № 5
- •InitializeComponent();
- •InitializeComponent();
- •Лабораторная работа № 6
- •InitializeComponent();
- •InitializeComponent();
- •Лабораторная работа № 7
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •Лабораторная работа № 8
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
Лабораторная работа № 5
Задание:
Усовершенствовать приложение, разработанное на прошлом занятии, превратив его в MDI-приложение.
Главную форму приложения сделать родительской.
Добавить в проект новую форму, сделать еѐ начальной формой приложения и превратить еѐ в дочернюю форму.
Оставить на родительской форме все пункты меню, а на дочернюю перенести все остальные элементы управления.
Переписать обработчики всех пунктов меню так, чтобы при создании и открытии файлов отображались бы данные о каждом сотруднике в отдельной дочерней форме, а при закрытии файла соответствующая дочерняя форма закрывалась.
При создании файла присваивать каждой новой дочерней форме заголовок «Новый сотрудник», а при сохранении – отображать в заголовке имя файла.
Ограничения:
1. Обеспечить доступность всех пунктов меню только в необходимые моменты времени.
Текст программы:
Главная форма проекта:
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;
using System.IO;
namespace Лабораторная__5
{
public partial class Form1 : Form
{
private Form2 form2;
public Form1()
{
InitializeComponent();
}
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
form2 = new Form2();
form2.MdiParent = this;
form2.Show();
расчётToolStripMenuItem.Visible = true;
подоходныйНалогToolStripMenuItem.Visible = true;
профсоюзныйВзносToolStripMenuItem.Visible = true;
form2.textBox5.Visible = false;
form2.textBox6.Visible = false;
form2.label5.Visible = false;
form2.label6.Visible = false;
сохранитьToolStripMenuItem.Visible = true;
сохранитьКакToolStripMenuItem.Visible = true;
form2.checkBox1.Visible = true;
form2.label1.Visible = true;
form2.label2.Visible = true;
form2.label3.Visible = true;
form2.label4.Visible = true;
form2.textBox1.Visible = true;
form2.textBox2.Visible = true;
form2.textBox3.Visible = true;
form2.textBox4.Visible = true;
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Текстовый документ (*.txt)|*.txt|Все файлы (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
StreamReader streamReader = new StreamReader(openFileDialog.FileName);
string line, line2, line3, line4, nid;
line = streamReader.ReadLine();
line2 = streamReader.ReadLine();
line3 = streamReader.ReadLine();
line4 = streamReader.ReadLine();
form2.textBox1.Text = line;
form2.textBox2.Text = line2;
form2.textBox3.Text = line3;
form2.textBox4.Text = line4;
nid = streamReader.ReadLine();
if (nid == "true" || nid == "True")
{
form2.checkBox1.Checked = Convert.ToBoolean(nid);
}
else
{
form2.checkBox1.Checked = false;
}
streamReader.Close();
form2.Text = openFileDialog.FileName;
}
}
private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
{
form2 = new Form2();
form2.MdiParent = this;
form2.Show();
form2.Text = "Новый сотрудник";
form2.textBox1.Clear();
form2.textBox2.Clear();
form2.textBox3.Clear();
form2.textBox4.Clear();
расчётToolStripMenuItem.Visible = false;
подоходныйНалогToolStripMenuItem.Visible = false;
профсоюзныйВзносToolStripMenuItem.Visible = false;
form2.textBox5.Visible = false;
form2.textBox6.Visible = false;
form2.label5.Visible = false;
form2.label6.Visible = false;
сохранитьToolStripMenuItem.Visible = true;
сохранитьКакToolStripMenuItem.Visible = true;
form2.checkBox1.Visible = true;
form2.label1.Visible = true;
form2.label2.Visible = true;
form2.label3.Visible = true;
form2.label4.Visible = true;
form2.textBox1.Visible = true;
form2.textBox2.Visible = true;
form2.textBox3.Visible = true;
form2.textBox4.Visible = true;
}
private void подоходныйНалогToolStripMenuItem_Click(object sender, EventArgs e)
{
form2.textBox5.Clear();
form2.textBox5.Visible = true;
form2.label5.Visible = true;
Int32 a = Convert.ToInt32(form2.textBox3.Text);
Double b;
b = a * 0.13;
form2.textBox5.AppendText(Convert.ToString(b));
}
private void профсоюзныйВзносToolStripMenuItem_Click(object sender, EventArgs e)
{
if (form2.checkBox1.Checked == false)
{
MessageBox.Show("Не является членом профсоюза", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
form2.textBox6.Clear();
form2.label6.Visible = true;
form2.textBox6.Visible = true;
Int32 a = Convert.ToInt32(form2.textBox3.Text);
Double b;
b = a * 0.01;
form2.textBox6.AppendText(Convert.ToString(b));
}
}
private void сохранитьКакToolStripMenuItem_Click(object sender, EventArgs e)
{
Form activ = ActiveMdiChild;
foreach (Form2 form2 in MdiChildren)
{
form2.SaveHow();
}
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
Form activ = ActiveMdiChild;
foreach (Form2 form2 in MdiChildren)
{
form2.Save();
}
}
private void закрытьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (расчётToolStripMenuItem.Visible == false)
{
Close();
}
var result = MessageBox.Show("Сохранить данные?", "Сохранение данных", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
Form activ = ActiveMdiChild;
foreach (Form2 form2 in MdiChildren)
{
form2.Save();
form2.Close();
}
сохранитьToolStripMenuItem.Visible = false;
сохранитьКакToolStripMenuItem.Visible = false;
расчётToolStripMenuItem.Visible = false;
подоходныйНалогToolStripMenuItem.Visible = false;
профсоюзныйВзносToolStripMenuItem.Visible = false;
}
if (result == DialogResult.No)
{
Close();
}
}
}
}
Дочерняя форма:
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;
using System.IO;
namespace Лабораторная__5
{
public partial class Form2 : Form
{
Form1 frm = (Form1)ActiveForm;
public Form2()
{