NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Inicializace třídy před startem programu

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Matyáš Černohous:11.5.2015 11:06

Zdravím,

při spuštění programu v Program.cs před spuštěním hlavního okna načítám informace, které potřebuji mít při startu hlavního okna načtené, Mám vytvořenou statickou třídu, do které ty informace ukládám a v hlavním okně je chci číst, ale narazil jsem na problém. Když v Program.cs načtu informace, tak se mi zdá, že se první inicializuje Program.cs a až pak třídy, takže data, které jsem předal jsou přepsané těmi defaultními. Nevíte, jak by se to dalo vyřešit, aby se nepřepisovala ? :)

Díky

Program.cs

static void Main()
       {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);
           if(nacteniNeceho == true)
                 {
                     Data.isVisible = true;
                  }
           Application.Run(new Form1());
       }

třída

public class Data
   {
       public static bool isVisible = false;
    }

Hlavní okno programu

public Form1()
       {
           if(Data.isVisible == true)
             {
               Prvek.Visible = true;
             }
           else
           Prvek.Visible = false;

           InitializeComponent();

       }
Editováno 11.5.2015 11:08
 
Odpovědět
11.5.2015 11:06
Avatar
Odpovídá na Matyáš Černohous
Michal Štěpánek:11.5.2015 12:38

Zkus to otočit

public Form1()
        {
           InitializeComponent();
            if(Data.isVisible == true)
              {
                Prvek.Visible = true;
              }
            else
            Prvek.Visible = false;



        }
Nahoru Odpovědět
11.5.2015 12:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Matyáš Černohous:11.5.2015 12:52

To jsem už zkoušel, ale taky to nefungovalo:(

 
Nahoru Odpovědět
11.5.2015 12:52
Avatar
Odpovídá na Matyáš Černohous
Michal Štěpánek:11.5.2015 13:07

Tak zkus to volání

if(nacteniNeceho == true)
                  {
                      Data.isVisible = true;
                   }

dát do Form1 pod to InitializeCom­ponent();

Nahoru Odpovědět
11.5.2015 13:07
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Matyáš Černohous
Patrik Valkovič:11.5.2015 13:27

Zkus tu třídu definovat taky jako statickou.

public static class Data
{
   public static bool isVisible = false;
}

Místo volání by nemělo být rozhodující, statická třída musí být vytvořena před čímkoliv jiným (dokonce i před voláním main).
Nepřepisuješ si to náhodou ještě někde? Třeba o tom nevíš.

Editováno 11.5.2015 13:27
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.5.2015 13:27
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.