C# - Web kontrol méretváltozását követő gyerek kontrolok

forráskód letöltése
Készíthetünk oly módon is web kontrolt, hogy amikor annak méretét változtatjuk, akkor a benne lévő gyerek kontrolok mérete is megfelelően változik. Mellékelt példában egy olyan web kontrolt hozunk létre, melyben egy TextBox szélessége automatikusan követi a web kontrol szélességének változását már szerkesztési időben is látható módon.
Mellékelt példa megnyitása előtt szükséges egy ResizeControl 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.
A megoldáshoz globálisan deklarálunk egy TextBox-ot.
    private TextBox tb;    
Ezt a CreateChildControls függvényen belül hozzuk létre, de a kontrol szélességéről itt nem rendelkezünk.
    protected override void CreateChildControls()
    {
      ...
      tb = new TextBox();
      tb.BorderColor = Color.Blue;
      tb.BorderWidth = 1;
      tb.Style.Add("left", "20");
      tb.Style.Add("top", "40");
      tb.Style.Add("position", "absolute");
      Controls.Add(tb);                 
    }
Amikor a kontrol mérete változik, akkor kerül meghívásra a Render függvény, hogy az új méretnek megfelelő tartalom előállításra kerüljön. Ekkor meghívjuk az EnsureChildControls függvényt, annak érdekében, hogy a CreateChildControls függvény ha még nem futott, akkor fusson le és ezáltal jöjjenek létre a szükséges gyerek kontrolok.
    protected override void Render(HtmlTextWriter output)
    {
      EnsureChildControls();
Ezt követően már megadhatjuk a TextBox szükséges szélességét és a példa kedvért az aktuális szélességet bele is írjuk a TextBox Text property-jébe.
      tb.Width = (int)Width.Value - 40;
      tb.Text = tb.Width.Value.ToString() + " pixel";
Végső, ám fontos lépésként meghívjuk az ős osztály Render függvényét.
      base.Render(output);
    }