Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jak v C# napsat kód aby se mi nezavřel Form2 hned po stisknutí tlačítka btnNajdi

Jak v C# napsat kód aby se mi nezavřel Form2 hned po stisknutí tlačítka btnNajdi?

// Form1
private void btnNajdiNahrad_Click(object sender, EventArgs e)
        {
            OknoNajdiNahrad najitNahradit = new OknoNajdiNahrad();
            najitNahradit.ShowDialog();
            
            if (najitNahradit.DialogResult == DialogResult.OK)
            {
              MessageBox.Show(" Výraz nenalezen.");
           }
        }


// Form2
private void btnNajdi_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.OK; //???????????
        }

Zmena predmetu, pôvodne: Jak v C# napsat kód aby se mi nezavřel Form2 hned po stisknutí tlačítka [b][i]btnNajdi (los)

Předmět Autor Datum
Místo ShowDialog() použij jenom Show(). Případně tomu buttonu nastavit DialogResult na None. Záleží…
Wikan 21.10.2018 16:35
Wikan
Okno přestalo pracovat
Spelec 21.10.2018 16:45
Spelec
Výborný popis problému.
Wikan 21.10.2018 16:48
Wikan
Form2 se otevře ale Button nereaguje
Spelec 21.10.2018 17:09
Spelec
Button dělá přesně to, co mu naprogramuješ. Pokud tam nebudeš mít žádný kód, tak se logicky ani nic…
Wikan 21.10.2018 17:11
Wikan
Potřebuji aby mi button ve Formu2 otevřel zprávu MessageBox.Show(" Výraz nenalezen."); ve Formu1 a F…
Spelec 21.10.2018 17:16
Spelec
ve Formu2 otevřel zprávu MessageBox.Show(" Výraz nenalezen."); ve Formu1 To jsem nějak nepochopil.…
Wikan 21.10.2018 17:40
Wikan
Button ve Formu2, otevřel zprávu MessageBox.Show(" Výraz nenalezen."); která je ve Formu1
Spelec 21.10.2018 17:53
Spelec
A když přímo do obsluhy události toho kliku na button napíšeš: MessageBox.Show(" Výraz nenalezen.")…
Wikan 21.10.2018 17:56
Wikan
Určitě bude ale mám to takovou testovací věc abych zjistil jak ovládat z Formu2 část kódu ve Formu1.
Spelec 21.10.2018 18:03
Spelec
To je v drtivé většině případů špatný přístup. Vážně to tak chceš?
Wikan 21.10.2018 18:04
Wikan
Možná sem to špatně popsal. Snažím se vytvořit Dialogové okno najít nahradit do textového editoru. P…
Spelec 21.10.2018 18:13
Spelec
Tak teď jsem zmatený. S čím máš teda konkrétní problém?
Wikan 21.10.2018 18:25
Wikan
S tím kódem na začátku na které sem si chci vyzkoušet přenos informací mezi Formy
Spelec 21.10.2018 18:30
Spelec
Můžeš z toho Form2 vyvolávat událost a na Form1 ji zpracovávat. https://docs.microsoft.com/en-us/dot…
Wikan 21.10.2018 18:34
Wikan
Programuji teprv 3 měsíce a učím se sám moc to nechápu nebyl by nějaký konkretní příklad?
Spelec 21.10.2018 18:40
Spelec
Např.: vytvoříš si třídu (třídy) reprezentující datový model tvé aplikace. Práce s daty pak budou za…
Wikan 21.10.2018 18:50
Wikan
Zkusím zatím dík.
Spelec 21.10.2018 18:55
Spelec
Vytvořil jsem si třídu tak to celkem pracuje podle mých představ. poslední
Spelec 21.10.2018 19:41
Spelec

Můžeš z toho Form2 vyvolávat událost a na Form1 ji zpracovávat.
https://docs.microsoft.com/en-us/dotnet/standard/events/

V tomhle případě bych ale ještě zvážil, jestli opravdu chceš, aby spolu komunikovaly přímo ty formuláře. Není totiž dobrý nápad míchat aplikační a prezentační logiku. Zjednodušeně řečeno není dobré všechno dávat do Formů. Lepší by bylo vytvořit si další třídy pro aplikační logiku a Formy používat opravdu jenom pro GUI.

Např.: vytvoříš si třídu (třídy) reprezentující datový model tvé aplikace. Práce s daty pak budou zajišťovány voláním metod těch tříd a nikoliv to, aby ta data měnilo přímo uživatelské rozhraní (Formy). Model pak bude zajišťovat, aby informace o změnách dat předával jiným částem aplikace (třeba jinému Formu).

Zpět do poradny Odpovědět na původní otázku Nahoru