Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# Zavírání, otevírání, skrývání formu

Dobré ráno přeji,

dělám práci do školy a snažím se zde využít skrytí a zobrazení formu. Myšlenka je taková, že mám úvodní form, ve kterém vyberu nastavení hry, po dokončení kliknu na tlačítko a zobrazí se form jiný. Potřeboval bych, aby se ten první form hned po otevření toho druhého skryl. Potom při zavření 2. formu chci, aby se opět objevil ten 1. Vypadá to asi takto:

frmStredni form_stredni = new frmStredni();
form_stredni.Show();
this.Close();

tohle mi neotevře ani ten 2. form ..

Zkoušel jsem toto:

frmStredni form_stredni = new frmStredni();
form_stredni.Show();
this.Hide();

Toto funguje, ale nepodařilo se mi potom při zavření druhého formu otevřít ten první.

Předem děkuji za rady.

Předmět Autor Datum
Zavření prvního formu vypne celou aplikaci, proto se zdá, že se ten druhý ani neotevře. Jak znovu ot…
Wikan 08.06.2013 10:39
Wikan
No, abych se přiznal, tak právě nevím, jak otevřít ten první znovu.
Fisherman 08.06.2013 17:19
Fisherman
Zavoláš na něj Show()
Wikan 08.06.2013 17:19
Wikan
Jak ho z toho jiného formu "zavolám" ?
Fisherman 08.06.2013 17:57
Fisherman
Nerozumím otázce.
Wikan 08.06.2013 18:08
Wikan
predpokladam ze nevie jak je nazvany jeho prvy form (objekt) :)
MM.. 08.06.2013 18:18
MM..
ked ten kod z ktoreho to volas patri k hlavnemu formu tak zasa this.Show()
MM.. 08.06.2013 18:33
MM..
Volám ho právě z jiného formu. Já mám hlavní form, ze kterého otevřu vedlejší a zároveň chci ten hla…
Fisherman 08.06.2013 18:42
Fisherman
No stejně jako jsi z prvního zavolal ten druhý. jmeno_formu.Show()
Wikan 08.06.2013 18:43
Wikan
Tam ho ale vytvářím..
Fisherman 08.06.2013 18:49
Fisherman
No jasně, že ho tam vytváříš. Tady si ho zase předáš odkazem třeba v konstruktoru.
Wikan 08.06.2013 18:53
Wikan
Mohu se zeptat jak? Tohle jsme se nikdy neučili. Zkoušel jsem různé způsoby, ale vařím spíše z vody.…
Fisherman 08.06.2013 19:03
Fisherman
frmStredni form_stredni = new frmStredni(this); form_stredni.ShowDialog(); Form parentForm; public…
Wikan 08.06.2013 19:08
Wikan
Perfektní. Funguje. Mnohokrát děkuji. Ještě bych měl jeden dotaz. Mám tlačítka, které mají v backgr…
Fisherman 08.06.2013 19:35
Fisherman
Dej sem snímek.
Wikan 08.06.2013 19:36
Wikan
Jedná se o spodní zelené tlačítko. Na 1. obrázku je to tak, jak má být a na druhém je vidět ta chyba…
Fisherman 08.06.2013 19:41
Fisherman
Před otevřením messageboxu zavolej this.Focus()
Wikan 08.06.2013 19:44
Wikan
Nepomáhá :(
Fisherman 08.06.2013 19:49
Fisherman
Tak by mohlo pomoct tohle: http://dotnetstep.blogspot.cz/2009/06/remove-focus -rectangle-from-button…
Wikan 08.06.2013 19:55
Wikan
Po kliknutí na tlačítko to tlačítko získalo focus - preto je zvýraznené. Ako sa toho zbaviť nepoviem…
pme 08.06.2013 19:44
pme
Když jsem tuhle třídu připojil k programu, tak se aplikace vůbec nespustí..
Fisherman 08.06.2013 20:04
Fisherman
Co znamená nespustí?
Wikan 08.06.2013 20:07
Wikan
Neobjeví se ani jeden Form. V procesech ale běží. Teď jsem to zkusil podle článku a aplikace běží, a…
Fisherman 08.06.2013 20:14
Fisherman
Ještě musíš ty tvoje Buttony změnit na CustomButtony. A dokud se budeš omezovat na věci, které vás n…
Wikan 08.06.2013 20:16
Wikan
A to udělám jak, pokud se mohu ptát? ... nechystám se být programátorem. Je to prostě projekt do šk…
Fisherman 08.06.2013 20:42
Fisherman
Všude kde máš nějaký Button, tak ho přepiš na CustomButton. To, co jsem psal, ale neplatí jenom pro…
Wikan 08.06.2013 20:47
Wikan
Omlouvám se, ale netuším, kde to mám přepsat.
Fisherman 08.06.2013 20:57
Fisherman
Ve zdrojovém kódu, kde jinde?
Wikan 08.06.2013 20:57
Wikan
Já opravdu nevím, co tím myslíš. Buttony přece vytvářím v Designu, takže je nikde napsané nemám. Zko…
Fisherman 08.06.2013 21:22
Fisherman
Jakou chybu?
Wikan 08.06.2013 21:24
Wikan
Vůbec to nezná "CustomButton". Nechme to tak, jak to je. Děkuji za rady. poslední
Fisherman 08.06.2013 21:57
Fisherman

Zavření prvního formu vypne celou aplikaci, proto se zdá, že se ten druhý ani neotevře. Jak znovu otevíráš ten první? Protože to by mělo normálně fungovat.
A zkus popřemýšlet, jestli by pro tvé potřeby nebylo vhodnější použít ShowModal() a vykašlat se na skrývání formů.

Mohu se zeptat jak? Tohle jsme se nikdy neučili. Zkoušel jsem různé způsoby, ale vařím spíše z vody.

Vím, že mám ten form psát někam sem:

frmStredni form_stredni = new frmStredni();
form_stredni.ShowDialog();

a pak ho volat odtud:

public frmLehka()
{
   InitializeComponent();
}

Ale nevím do jakých těch závorek.

Perfektní. Funguje. Mnohokrát děkuji.

Ještě bych měl jeden dotaz. Mám tlačítka, které mají v backgroundu obrázek a transparentní pozadí. Nechci, aby kolem toho byl border, takže jsem nastavil border na 0 a všude, kde to šlo jsem dal transparentní barvy. Border zmizel, ale objevil se problém. Když mám někde Message Box, který se objeví po kliknutí na takové tlačítko, tak je kolem tlačítka slabý bílý background. Jakmile odkliknu messageBox tak je vše v pořádku, ale do té doby je tam bílý border.

Po kliknutí na tlačítko to tlačítko získalo focus - preto je zvýraznené. Ako sa toho zbaviť nepoviem, lebo C# (platformu .NET) neovládam...

Edit:
Vytvor si vlastnú triedu:

public class NoFocusCueButton : Button
{
    protected override bool ShowFocusCues
    {
    	get
    	{
    		return false;
    	}
    }
}

Keď použiješ vyššie upravenú triedu tlačítka, nebudeš mať po kliknutí ten obdĺžnik.

Neobjeví se ani jeden Form. V procesech ale běží. Teď jsem to zkusil podle článku a aplikace běží, ale efekt je zde pořád. Abych se přiznal, tak s třídami neumím vůbec pracovat. Vím, že to je jedna z nejdůležitějších věcí, ale nás to prostě nikdo neučí. Vařím tedy opět z vody.

Vytvořil jsem novou třídu (pravým tlačítkem na projekt .. Add.. class.. ), do které jsem vložil: (z článku)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WFA_Kimova_hra
{
    class CustomButton : System.Windows.Forms.Button
    {
        protected override bool ShowFocusCues
        {
            get
            {
                return false;
            }
        }
    }
}

To, co se mělo ale objevit u vlastností tlačítka se neobjevilo..

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