HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Property értékek automatikus tárolása, visszaállítása


Példaprogram letöltése

9182 bájt

Tegyünk egy From-ra egy TextBox-ot. A felhasználó ebbe bármit írhat. Ha bezárja az alkalmazásunkat és újra indítja azt, akkor a TextBox tartalma elvész. Lehetnek olyan esetek, amikor az lenne a jó, ha megmaradna az utoljára beírt adat. Ekkor az adott TextBox Text property-jét tárolnunk kell a program bezárásakor és a tárolt adatot fel kell használnunk a programunk újbóli indításakor. A legjobb megoldás persze az lenne, ha bizonyos kontrolok, bizonyos property-jei automatikusan tárolásra és visszaállításra kerülnének. Mellékelt példában egy olyan komponenst készítünk, mely megvalósítja ezt a feladatot.

A mellékelt projekt lefordítása után a ToolBox-ra felvehető egy AutoStoreText nevű komponens. E komponenst felhasználhatjuk arra, hogy egy-egy kontrol Text property-jét tároljuk és visszaállítsuk szükség esetén. Hogy melyik kontrolt kezelje a komponens, azt a Control nevű property-jében adhatjuk meg. Ezt követően a Store függvény hívásakor megtörténik a választott kontrol Text property-jének tárolása a Windows regisztrációs adatbázisba, majd a Restore függvény hívásakor a visszaállítás. Így csak arról kell gondoskodnunk, hogy a programunk indulásakor, vagy amikor csak szükség van rá, meghívjuk a Store és Restore függvényeket.
A Store a Windows regisztrációs adatbázis CurrenUser főkulcsán belül a baseKey konstansban megadott kulcson végzi el a tárolást.
    public void Store()
    {
      if (control!=null)
      {
        RegistryKey rk;
        rk = Registry.CurrentUser.CreateSubKey(baseKey);  
        rk.SetValue(control.Name, control.Text);
        rk.Close();
      }
    }
A Restore függvény megpróbálja kiolvasni a már esetlegesen tárolt adatot, amennyiben ez sikeres, beállítja a választott kontrol Text property-jét.
    public void Restore()
    {
      if (control!=null)
      {
        RegistryKey rk;
        try
        {
          rk = Registry.CurrentUser.OpenSubKey(baseKey, true);  
          control.Text=rk.GetValue(control.Name).ToString();
          rk.Close();
        }
        catch
        {
        }
      }
    }
A komponens felhasználásához tegyünk a Form-ra annyit belőle, amennyi szükséges, majd mindegyiknél állítsuk be a Control property-t. Ezt követően a Load eseménynél hívjuk meg a komponensek Restore függvényét, így a programunk indulásakor helyreállítottuk a tárolt Text property-ket.
    private void Form1_Load(object sender, System.EventArgs e)
    {
      autoStoreText1.Restore();
      autoStoreText2.Restore();
    }
A programunk bezárása előtt meg kell hívnunk a Store függvényeket, erre a Closing esemény megfelel.
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
      autoStoreText1.Store();
      autoStoreText2.Store();
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 552. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |