C# - Környezeti változók értékét megjelenítő Label kontrol

forráskód letöltése
Készítünk egy olyan kontrolt, amely képes különféle környezeti változók aktuális értékét megjeleníteni egy Label kontrol feliratában. Ilyen értékek többek között a számítógép neve, az aktuálisan bejelentkezett felhasználó neve, operációs rendszer verziószáma, rendszer indítása óta eltelt idő stb. Hogy aktuálisan melyik érték legyen kijelezve, azt egyszerűen egy property-n keresztül adhatjuk meg.
A bevezetőben említett kontrolt a UserControl1.cs forráskódban készítjük el. Program fordítása után ezt az új kontrolt fel is vehetjük a Toolbox-ra. Ehhez kattintson a Toolbox-on jobb egérgombbal, majd válassza a Customize Toolbox menüpontot. A megjelenő ablakban a .NET Framework Components lapon kattintson a Browse gombra, majd keresse elő az imént lefordított alkalmazás EXE-jét. Ettől kezdve a kontrol bármely Form-on alkalmazható. Használatához a TextValue property-ben válassza ki a megjelenítendő értéket.
Ez az érték TextValueEnum felsorolt típus elemei közül kerülhet ki, mely az alábbiak egyike lehet:
  • CommandLine - az elindított alkalmazás parancssora
  • CurrentDirectory - az aktuális könyvtár
  • MachineName - számítógép neve
  • OSVersion - futó operációs rendszer neve és verziószáma
  • SystemDirectory - System könyvtár elérési útvonala
  • TickCount - rendszer indításától eltelt idő ezredmásodpercben
  • UserDomainName - tartomány neve, melybe a felhasználó bejelentkezett
  • UserInteractive - igaz, ha interaktív bejelentkezés történt
  • UserName - bejelentkezett felhasználó neve
  • Version - .NET Framework verziószáma
  • WorkingSet - az alkalmazás által lefoglalt memória terület
Ehhez a felsorolt típushoz létrehozunk tehát egy TextValue property-t, melyen keresztül beállítható, hogy milyen értéket jelenítsen meg a Label.
    public TextValueEnum TextValue
    {
      get
      {
        return textValue;
      }
      set
      {
Amikor a property értéke változik, akkor kell a Label Text property-jét aktualizálni. Lesznek olyan tulajdonságok, melyek folyamatosan változnak. Ahhoz, hogy ezek mindig az aktuális értéket mutassák, létrehozunk egy Timer időzítőt, mely rendszeresen frissíti a kijelzett értéket. Ezt az időzítőt első lépésként leállítjuk, majd tároljuk a property új értékét.
        timer.Enabled = false;
        textValue = value;
A beállított értéktől függően új értéket adunk a Text property-nek, melyeket az Environment osztály statikus property-jeiből veszünk.
        switch (textValue)
        {
          case TextValueEnum.CommandLine: 
            Text = Environment.CommandLine.ToString();
            break;
Azoknál az értékeknél, melyek folyamatosan frissülnek - mint például a rendszer indítástól eltelt idő - engedélyezzük az időzítő futását.
          case TextValueEnum.TickCount: 
            Text = Environment.TickCount.ToString();
            timer.Enabled = true;      
            break;
A kontrol konstruktorában hozzuk létre az időzítőt, mely egytized másodpercenként aktivizálja a DoElapsed függvényt.
      timer = new System.Timers.Timer();
      timer.Interval = 100;
      timer.Elapsed += new ElapsedEventHandler(DoElapsed);     
      timer.Enabled = false;  
Amikor ez a függvény fut, akkor frissítenünk kell a Text property értékét. Ezt úgy érjük el, hogy a TextValue property értékének az aktuálisan tárolt értéket adjuk.
    private void DoElapsed(object source, ElapsedEventArgs e)
    {
      TextValue = TextValue;
    }