Problem z System.NullReferenceException po modyfikacji programu

0

Witajcie,

Mam mały problem, dodawałem jednego pośredniego Forma do projektu i przestały działać mi pozostałe Formy odwołujące się do pierwszego Forma, a mianowicie.

Form1 jest bazą - to w nim dzieją się wszystkie najważniejsze akcje programu.
We wstążce znajduje się odwołanie do "opcji" i tutaj w przed modyfikacją, po kliknięciu od razu przechodził do okna w którym był lista rozwijana i po kliknięciu w jeden z wyborów listy wyskakiwał odpowiedni form dzięki któremu można było modyfikować dane z pierwszego forma.
Wprowadzona modyfikacja polegała na dodaniu dodatkowego "pośredniego" Forma, który służy jako opcja "logowania" (dostępu do Forma z opcjami, aby osoba nieupoważniona nie mogła nic zmienić), po dodaniu tej modyfikacji coś się rozjechało, ponieważ po "zalogowaniu się" i zmianie czegokolwiek w opcjach wyrzuca w odpowiednim formie błąd "System.NullReferenceException" w odniesieniu do Forma1.

poniżej kod pośredniego forma logowania:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Linia
{
   
    public partial class Form8 : Form
    {
        public Form6 Form6;
        public Form1 Form1;
        public Form2 Form2;
        public Form3 Form3;
        public Form4 Form4;
        public Form5 Form5;
        public Form7 Form7;

     
        public Form8(Form1 Form)
        {
            InitializeComponent();
            this.Form1 = Form;
         
        }
        public Form8(Form6 Form)
        {
            InitializeComponent();
            this.Form6 = Form;

        }

        public Form8(Form2 Form)
        {
            InitializeComponent();
            this.Form2 = Form;

        }

        public Form8(Form3 Form)
        {
            InitializeComponent();
            this.Form3 = Form;

        }

        public Form8(Form4 Form)
        {
            InitializeComponent();
            this.Form4 = Form;

        }

        public Form8(Form5 Form)
        {
            InitializeComponent();
            this.Form5 = Form;

        }

        public Form8(Form7 Form)
        {
            InitializeComponent();
            this.Form7 = Form;

        }


        private void Form8_Load(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            string uzytkownik = this.textBox3.Text;
            string haslo = this.textBox4.Text;

            if (SprawdzNazweiHaslo(uzytkownik, haslo))
            {
                //MessageBox.Show("Jest w systemie", "Zaalogowano");
               
               
                Form6 Form6 = new Form6(this);
                Form6.Show();
                //logowanieFrm.Close();
                this.Close();
            }
            else
            {
                MessageBox.Show("Niepoprawna nazwa użytkownika lub hasło", "Błąd logowania");
                return;
            }
        }
        public bool SprawdzNazweiHaslo(string uzytkownik, string haslo)
        {
            if (uzytkownik == "xxx" & haslo == "xxx")
                return true;
            else
                return false;

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

0

Sam ten koszmar wymyślił, czy ściągnąłeś?

Tym niemniej gratulacje. Zrobiłeś wszystko, aby to było niedebugowalne, nie rozwijalne (właśnie po zmianie wyleciało w powietrze)

0

Nie przekazujesz gdzieś referefencji Form1 i próbujesz się do niej odnieść.

0

@Szatansky:

Pozwoliłem sobie zerknąć w historię.
Dup...sz się z powoływaniem form od roku.

Może pora przeczytać coś solidnego, popatrzyć na jakis lepszy projekt, nie sądzisz?

0

Problem rozwiązany.
Zrobiłem to tak:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Linia
{
   
    public partial class Form8 : Form
    {
        public Form6 Form6;
        public Form1 Form1;
        public Form2 Form2;
        public Form3 Form3;
        public Form4 Form4;
        public Form5 Form5;
        public Form7 Form7;

     
        public Form8(Form1 Form)
        {
            InitializeComponent();
            this.Form1 = Form;
         
        }
        public Form8(Form6 Form)
        {
            InitializeComponent();
            this.Form6 = Form;

        }

        public Form8(Form2 Form)
        {
            InitializeComponent();
            this.Form2 = Form;

        }

        public Form8(Form3 Form)
        {
            InitializeComponent();
            this.Form3 = Form;

        }

        public Form8(Form4 Form)
        {
            InitializeComponent();
            this.Form4 = Form;

        }

        public Form8(Form5 Form)
        {
            InitializeComponent();
            this.Form5 = Form;

        }

        public Form8(Form7 Form)
        {
            InitializeComponent();
            this.Form7 = Form;

        }


        private void Form8_Load(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            string uzytkownik = this.textBox3.Text;
            string haslo = this.textBox4.Text;

            if (SprawdzNazweiHaslo(uzytkownik, haslo))
            {
            
                Form1.opcje();
                //logowanieFrm.Close();
                this.Close();
            }
            else
            {
                MessageBox.Show("Niepoprawna nazwa użytkownika lub hasło", "Błąd logowania");
                return;
            }
        }
        public bool SprawdzNazweiHaslo(string uzytkownik, string haslo)
        {
            if (uzytkownik == "Admin" & haslo == "razdwatrzy")
                return true;
            else
                return false;

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

Natomiast w Formie 1 utworzyłem voida

 public void opcje ()
        {
            Form6 frm6 = new Form6(this);
            frm6.Show();
        }

Do zamknięcia.

Podziekowania dla @Ales , natomiast za nic nie wnoszące "za plucie jadem" @ZrobieDobrze nie dziękuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1