C# - Dinamikus property-k használata

forráskód letöltése
Minden kontrol esetén találunk a Properties ablakban egy rejtélyes DinamicProperties nevű property-t. Ezt felhasználva képesek lehetünk a kész EXE-ben lévő objektumok property-jeinek értéket adni kívülről. Nézzük miként is…
Amikor ezt a lehetőséget használjuk, akkor létrejön egy EXENév.exe.config állomány, mely egy XML formátumú állomány. Ebben kerülnek eltárolásra azok a property-k melyek a programunkban dinamikusak. Amikor indul az EXE, akkor betöltésre kerül ez az állomány és az itt található értékeket az adott property-k mint kezdőértéket megkapják. Fontos tudnunk tehát, hogy ezen állomány csak a programunk indulásakor kerül beolvasásra. Az állomány tartalmát amúgy szerkeszthetjük bármikor, akár egy Notepad segítségével is.
Nézzük most, hogyan jött létre a mellékelt példa.
  • Egy Form-ra feltettünk három TextBox kontrolt.
  • A textBox1 kontrol DynamicProperties property-t kinyitva az Advanced-nél megjelenő gombra kattintsunk, majd a listából jelöljük meg a Text property-t és zárjuk az ablakot. Ezzel a textBox1 kontrol Text property-jét dinamikusra definiáltuk. Ha most megnézzük a Properties ablakban a Text property-t, akkor annak neve után láthatunk egy kis jelet, mely tudatja velünk, hogy e property dinamikusan a program indulásakor kap értéket.
  • Következő lépésként a textBox2 DynamicProperties Advanced gombjára kattintva szintén jelöljük ki a Text property-t. Mielőtt azonban bezárnánk az ablakot a Key mapping listájából válasszuk ki a textBox1.Text elemet. Ezzel azt érjük el, hogy a textBox2 a programunk indulásakor a textBox1 értékét kapja. Vagyis, egy lépésben állíthatjuk az értékét e két TextBox-nak. Ha persze a feladatunk jellegéből adódóan különböző kezdő értékre lenne szükségünk, akkor ezt a lépést hagyjuk ki.
  • A textBox3-nál végezzük ugyanazokat a lépéseket, mint a textBox2-nél. Így mind a három TextBox-nak egy közös kezdőértéket adhatunk majd.
  • Fordítsuk le az EXE-t. Létrejön a Dynamic.exe és mellette Dynamic.exe.config is.
  • Nyissuk meg a Dynamic.exe.config-ot szerkesztésre és állítsunk tetszőleges kezdőértéket a textBox1.Text-nél a value attribútumban.
<configuration>
  <appSettings>
    <!--   User application and configured property settings go here.-->
    <!--   Example: <add key="settingName" value="settingValue"/> -->
    <add key="textBox1.Text" value="1200" />
  </appSettings>
</configuration>
Ha ezek után futtatjuk a kész EXE-t, akkor az a config állományból olvassa be a három TextBox Text property-jének kezdőértékét.