Obsługa Form innymi Form'ami

Obsługa Form innymi Form'ami
DT
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:3
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....?

Kopiuj
Form1 form1 = new Form1();

form1.textBox7.Text = textBox7.Text;

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

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

edytowany 1x, ostatnio: Riddle
ZD
Form1 mówi bardzo dużo o autorze: że jest zaplątany, i nie wie co ona naprawdę robi. Gdyby wiedział, by nazwał LiczenieJabłekForm
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 2x, ostatnio: ZrobieDobrze
DT
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:3
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.

ZD
Tak długo, jak będziesz ukrywał a) realną dziedzinę b) kod, nie widzę możliwości podpowiedzieć
Z5
  • Rejestracja:prawie 8 lat
  • Ostatnio:około rok
  • Postów:14
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;
    }
}

}

FP
  • Rejestracja:prawie 4 lata
  • Ostatnio:8 miesięcy
  • Postów:31
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

DT
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:3
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.