Uzyskanie dostępu do kontrolek,zmiennych między 4 formami.

0

Witam.

Piszę program w którym mam 4 formy i chciałbym aby każda z nich miała do siebie dostęp.Chcę przykładowo przesłać tekst z formy4 do formy3 lub z formy2 do formy3 Niestety gdy próbuje przekazać parametr do więcej niż jednej formy to dana forma jest null.Nie wiem co robię źle. Z góry dzięki za pomoc.

0

No przydałby się kod jakiś.Bez tego nikt nie wie co robisz źle

0
 public partial class Form2 : Form
    {




        public Form1 formaa1;
        public Form2 forma2;
        public Form3 formaa3;
        public Form4 formaa4;
        public Bitmap domyslny_obraz;
        public Form2(Form1 form1)
        {

            InitializeComponent();
            formaa1 = form1;

            formaa3 = new Form3(form1);
            //       this.plikToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            toolStripStatusLabel3.Text = "{X=0,Y=0}";
            timer1.Enabled = true;
            //  Form3 forma3 = new Form3(this);
            Start_bitmapy();
            formaa1.open_grafike = new OpenFileDialog();
            formaa1.kolor = new ColorDialog();

            domyslny_obraz = (Bitmap)formaa1.pictureBox1.BackgroundImage;
        }

        public void KoloryzacjaToolStripMenuItem_Click(object sender, EventArgs e)
        {

            formaa4 = new Form4(this);
            formaa4.Show();
        }

To jest dość duży projekt nie wiem czy taki fragment starczy.

0

No, a w której linijce masz ten null?

0

    private void Czerwony_tr_ public partial class Form4 : Form
    {
        private Form2 form2;
        private Form3 form3;
        public Form1 formaa1;
        public Form4 forma4;


        public Form4(Form1 forma1)
        {
            InitializeComponent();
            formaa1 = forma1;
         

        }

        public Form4(Form2 form2)
        {
            InitializeComponent();
            this.form2 = form2;
        }

 private void Czerwony_tr_Scroll(object sender, EventArgs e)
        {
           label_R.Text = "R= " + Czerwony_tr.Value.ToString();

            form3.Text = "OD FORMY 4";
        }

W tym przypadku form3 jest null.Nie wiem co robić już nawet z konstruktorami coś zacząłem działać ale bez skutku.

0

A czemu form3 ma nie być nullem skoro nigdzie mu nie przypisałeś żadnej wartości?

0

Napisałem taki konstruktor a w nim przypisałem form3 i nic. Chyba że konstruktor może być tylko jeden w danej formie albo zawsze będzie null po za jego klamrami. To są tylko moje przypuszczenia.


     public Form4(Form3 forma3)
        {
            InitializeComponent();
            form3 = forma3;
        }
0

Chyba się trochę zamotałeś w tych konstruktorach xD
Dalej nie przekazujesz referencji do 'Form4' bo nie używasz tego konstruktora.

   formaa4 = new Form4(this); // this w tym wypadku to form2
   formaa4.Show();

a więc używasz tego konstuktora

        public Form4(Form2 form2)
        {
            InitializeComponent();
            this.form2 = form2;
        }

Myślę, że takie nakierowanie wystarczy :)

0

a można przekazać referencje do form2 i form3 jednocześnie ??

0

Można, trzeba tylko napisać konstruktor, który na to pozwoli.

Swoją drogą, nie irytują Cię te cyferki przy nazwach formów? Nie lepiej nazywać je tak, aby nazwy mówiły do czego służą?

0
kuba7528 napisał(a):

a można przekazać referencje do form2 i form3 jednocześnie ??

Oczywiście. Tutaj przykład:

// readonly dlatego żebyś przypadkiem nie nadpisał :) (readonly można zainicjować tylko w konstruktorze lub bezpośrednio)
private readonly Form2 _form2;
private readonly Form3 _form3;

// konstruktor
public Form4(Form2 form2, Form3 form3)
{
   _form2 = form2;
   _form3 = form3;
}

0

A z form1 nie będzie problemu bo wcześniej próbowałem z nią i mi się nie wyświetlała. Co do nazw form to zostawię sobie to na koniec gdyż chcę jeszcze kilka rzeczy napisać.

0

Ja bym się zastanowił w ogóle nad sensem. Jaki jest sens tego, że jeden form ustawia coś w 3 czy 4 innych. Wszystkie są na raz widoczne i coś się w nich zmienia?

Zostawienie zmiany nazw na później skutkuje stratą czasu. Zrób to od razu. Nazwy klas firmie i nazwy zmiennych. Jak zostawisz na później to zostanie już na zawsze.
Na główne pytania już poprzednicy odpowiedzieli.

0

Jestem raczej początkujący a program pisze dla siebie żeby czegoś się nauczyć więc raczej nie zwracam uwagi na takie rzeczy ale dzięki za wskazówkę a co do form to chce się jakoś do nich odwoływać bo nie chcę mieć wszystkich ustawień w 1 formie.

0

Spoko. Ja Cie nie atakuje ale jak się uczysz to naucz się logicznie nazywać klasy i zmienne. To podstawowa rzecz jakiej trzeba się nauczyć.

0

Dzięki.

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