C# - Kliensnél lévő monitor felbontásának meghatározása webes alkalmazásnál

forráskód letöltése
Amikor ASP.NET-es alkalmazásokat készítünk, akkor nagyon fontos szempont, hogy a létrehozandó web oldal milyen felbontású monitoron jelenik meg. Mivel az internetes felhasználóknál mindig más és más felbontással találkozunk, így alkalmazásunkat úgy kell elkészíteni, hogy mindegyiken elfogadható eredményt szolgáltasson. Ha azonban alkalmazásunk pontosan tudhatná, hogy az aktuális kliensnél milyen felbontású a képernyő, akkor programunk automatikusan igazodhatna ehhez.
Mellékelt példa megnyitása előtt szükséges egy MonitorRes nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
E feladat megvalósításához helyezzünk el a web oldalunkon a ToolBox HTML lapjáról két Hidden objektumot. Ezek olyan objektumok, melyek a web lapon nem okoznak látható eredményt, viszont képesek arra, hogy tetszőleges értéket tároljanak. Ezeket az adatokat kezelhetjük akár web lapon elhelyezett szkriptből, vagy a szerveren elhelyezett programunk segítségével is. E két objektumban tároljuk a kliensnél lévő képernyő szélességét és magasságát. A két objektum elhelyezése után váltsunk át HTML nézetre, majd adjunk nevet az objektumoknak. Az egyik legyen scWidth, a másik pedig scHeight.
      <INPUT style="Z-INDEX: 103; LEFT: 64px; WIDTH: 24px; POSITION: absolute; TOP: 32px; HEIGHT: 22px" type="hidden" name="scWidth" id="scWidth">
      <INPUT style="Z-INDEX: 104; LEFT: 104px; WIDTH: 24px; POSITION: absolute; TOP: 32px; HEIGHT: 22px" type="hidden" name="scHeight" id="scHeight">
Helyezzünk most el a HTML kódba egy rövid kis szkriptet, mely kiolvassa a képernyő szélességét, magasságát, és tárolja e két rejtett mezőbe.
    <SCRIPT>
       function startup() 
       {                     
         document.all.scWidth.value = screen.Width;         
         document.all.scHeight.value = screen.Height;   
       }
    </SCRIPT>
A szkript futásáról kell még gondoskodnunk, melyet akkor hívunk meg, amikor a web oldal letöltődik, így annak onload eseményét használjuk fel.
  <body MS_POSITIONING="GridLayout" onload="startup()">
Ezt követően már csak azt kell megvárnunk, míg web oldalunk adataival egy újabb kérés érkezik szerverünkön lévő programunkhoz. Ebben az esetben nincs más teendőnk, mint a két rejtett mező értékét kiolvasni. Most már rendelkezésre áll programunk futási ideje alatt az adott kliensnél lévő képernyő szélessége és magassága, melyeket szabadon felhasználhatunk.
    private void Page_Load(object sender, System.EventArgs e)
    {
      if (IsPostBack)
      {
        int w = Convert.ToInt32(Request.Form["scWidth"]);
        int h = Convert.ToInt32(Request.Form["scHeight"]);
        Label3.Text = w.ToString() + " - " + h.ToString();
      }
    }