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

C# .NET .NET (C# a Visual Basic) Inicializace třídy před startem programu American English version English version

Avatar
Matyáš Černohous (Matesak):

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 (Matesak)
Michal Štěpánek:

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 (Matesak):

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

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

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
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
patrik.valkovic:

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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 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.