Obsługa Form innymi Form'ami

0

Cześć,

Piszę pewien program i muszę zaprogramować obsługę Form1 w innych Form'ach, czyli:

Button1 uruchamia Form2
W Form2 oblicza się wartość, Form2 zmienia wartość textBox1 w Form1
Button2 uruchamia Form3
W Form3 oblicza się wartość, Form3 zmienia wartość textBox2 w Form1

Mam to napisane jednak... Jeśli zamknę Form2 to textBox1 ma wprowadzoną wartość, po uruchomieniu Form3, obliczeniu i zamknięciu textBox1 nie ma wartości, a jedynie textBox2....

Czy jest ktoś wstanie mi pomóc lub podsunąć rozwiązanie....?

Form1 form1 = new Form1();

form1.textBox7.Text = textBox7.Text;

Hide();
form1.Show();
Close();

Przykładowe zamknięcie Form2 i zmiana wartości Form1

0

@Dawid Tomczyk:

Jak najwięcej zdecentralizować zcentralizować *) obliczeń, przechowywania danych do klasy (zwykle zwana Model), inaczej nigdy z tego nie wypłyniesz.
Nie traktować widgetów na Form jako kontenerów danych, ani nie rozbudowywać algorytmów merytorycznych na zdarzeniach

*) tenże model dzielony pomiędzy formami.

To tyle, co wyczytałem z "nieco" chaotycznego postu.

ps. tak w ogóle, jak poczatkującemu sie wydaje, że MUSI użyć więcej form do jednego zagadnienia, to bardzo często się okazuje, że nie zna możliwości bogatszego grupowania / segmentowania danych na JEDNEJ formie (myślę Group, TabControl itd)
To prawie zawsze jest zła polityka - dopuszczam duża główna forma <-> mała doraźnie powoływana, jak search na edytorze

0

@ZrobieDobrze:

Najchętniej zrobiłbym jeden duży Form, ale danych jest dosyć dużo (i może będzie więcej).
Po prostu obliczenie jednej wartości w osobnym formie byłoby wygodniejsze ze względu na to, że żeby obliczyć jedną wartość trzeba podać około 7 zmiennych, a w głównym formie mam około 9 zmiennych do obliczenia.

0

Można to zrobić tak:
dla formy1Box1
namespace Test1
{
public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2();
        
        frm.frm1 = this;
        frm.Show();
    }
}

}

trzeba pamiętać że zmienna textBox1 powinna być public

dla formy2

namespace Test1
{
public partial class Form2 : Form
{

    public Form1 frm1;

    public Form2()
    {
        InitializeComponent();
        
}

    private void Form2_Load(object sender, EventArgs e)
    {
        textBox1.Text = ((Form1)frm1).textBox1.Text;

    }

    private void button1_Click(object sender, EventArgs e)
    {
       ((Form1)frm1).textBox1.Text = textBox1.Text;
    }
}

}

0

Przy zamykaniu forma możesz mieć dostęp do jego publicznych zmiennych.

  1. Form1 wywołuje form 2
  2. Form2 prowadzi obliczenia i się zamyka
  3. Form1 jest zapięty do Form2 i odczytuje wartosc

https://stackoverflow.com/questions/20158714/getting-a-value-from-another-form-using-c-sharp

0

Już ogarnięte :)
Dziękuję wszystkim za pomoc.

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