После закрытия формы в модальном режиме пропадают ранее переданные на форму данные

сообщество! Пишу лабораторную работу в колледже, прошу строго не судить, если вопрос глупый. Нужно, чтобы из формы login.cs передавался логин студента на форму stdnt_pnl.cs, оно передаётся, но при открытии формы dop.cs, её закрытия передаются нужные данные из dop.cs, это правильно, так должно быть, но ранее переданная в label1 переменная с логином студента куда-то пропадает. Так же, не выводится средний балл в textbox1 на форму stdnt_pnl.cs из datagriedview в форме dop.cs. Нужно использовать методы передачи данных такие, как я попытался в коде, иначе задание не примут. Ниже прикладываю коды со всех форм и скриншоты работы с пометками на них где и что не так. Прошу прощения, если вопрос сформулирован некорректно, буду рад изменить, согласно критике.

Код login.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 laba12
{
    public partial class login : Form
    {
        public string techer_login = "Табаргина Г.В.";
        public string techer_pass = "qwerty123";
        public string student_login = "Дьяконов Е.И.";
        public string student_pass = "qwerty";
        

        
        
        public login()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            if (login_box.Text == techer_login && pass_box.Text == techer_pass)
            {
                tchr_pnl tchr_Pnl = new tchr_pnl(techer_login);
                tchr_Pnl.Show();
                this.Hide();
            }
            else if (login_box.Text == student_login && pass_box.Text == student_pass)
            {
                stdnt_pnl stdnt_Pnl = new stdnt_pnl(student_login);
                stdnt_Pnl.Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("Введён неверный логин или пароль, проверьте правильность использованных данных," +
                    " или обратитесь к системному администратору", "Отказано в доступе!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        
    }
}

Далее идёт переход на stdnt_pnl.cs, вот его код.

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

namespace laba12
{
    public partial class stdnt_pnl : Form
    {
        private string _student_login;
        public string sr
        {
            get { return textBox1.Text; }
            set { textBox1.Text = sr; }
        }
        public stdnt_pnl(string student_login)
        {
            InitializeComponent();
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
            dateTimePicker1.CustomFormat = "ddd dd MMM yyyy";
            dateTimePicker1.Value = DateTime.Now;
            label1.Text = String.Format("Дата: {0}", dateTimePicker1.Value.ToLongDateString());
            _student_login = student_login;
            lbl_student.Text = ("Студент: " + _student_login);

            label2.Text = "Специальность: " + special.spec;
            label3.Text = "Группа: " + special.group;
            
            
        }

        private void stdnt_pnl_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            label1.Text = String.Format("Дата: {0}", dateTimePicker1.Text);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dop dop = new dop();
            dop.Show();
            this.Hide();
        }

    }

}

Либо на tchr_pnl.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 laba12
{
    public partial class tchr_pnl : Form
    {
        private string _techer_login;
        public tchr_pnl(string techer_login)
        {
            InitializeComponent();
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
            dateTimePicker1.CustomFormat = "ddd dd MM yyyy";
            dateTimePicker1.Value = DateTime.Now;
            label1.Text = String.Format("Дата: {0}", dateTimePicker1.Value.ToShortDateString());
            _techer_login = techer_login;
            label_teacher.Text = ("Преподаватель: " + techer_login);

        }

        

        private void tchr_pnl_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            label1.Text = String.Format("Дата: {0}", dateTimePicker1.Text);
        }
    }
}

При нажатии кнопки дополнительно, происходит переход на форму dop.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 laba12
{
    public partial class dop : Form
    {
        private string _student_login;
        

        public dop()
        {
            InitializeComponent();
            special.spec = comboBox1.Text;
            special.group = textBox1.Text;
            
        }
        

        private void button1_Click(object sender, EventArgs e)
        {
            special.spec = comboBox1.Text;
            special.group = textBox1.Text;
            

                int sum = 0;
                double sr = 0;
                foreach (DataGridViewRow rows in dataGridView1.Rows)
                {
                    for (int i = 0; i < dataGridView1.Columns.Count; i++)
                    {
                        if (rows.Cells[i].Value != null && rows.Cells[i].Value != DBNull.Value)
                        {
                            sum += Convert.ToInt32(rows.Cells[i].Value);
                        }
                    }
                }
            special.sr = sum / 5;



            stdnt_pnl stdnt_Pnl = new stdnt_pnl(_student_login);


            stdnt_Pnl.Show();
            this.Hide();


        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) // при изменении значения ячейки
        {

        }

        private void dop_FormClosing(object sender, FormClosingEventArgs e)
        {
            //stdnt_pnl studentForm = new stdnt_pnl();
            //studentForm.studentName = txtStudentName.Text;
            //studentForm.Show();

            //stdnt_pnl stdnt_Pnl = new stdnt_pnl(_student_login);
            //stdnt_Pnl._student_login = txtStudentName.Text;

            //stdnt_Pnl.Show();
            
        }
    }
}

Так же в программе используется вспомогательный класс special.cs, его код представлен ниже:

internal class special
{
    public static string spec;
    public static string group;
    public static double sr;
}

Ну так вот, при входе от студента выскакивает следующее окно введите сюда описание изображения

Логин передался, нажимаем "Дополнительно и смотрим дальше" введите сюда описание изображения

Ввели нужные данные и смотрим на проблему: введите сюда описание изображения

Логин пропал, а средний балл так и не передался. Буду очень благодарен каждому, кто внесёт какой-то вклад в эту тему.


Ответы (0 шт):