Ho scritto una routine per windows mobile 5 dove durante l'esecuzione del programma la form viene ridisegnata aggiungendo dei nuovi tab contenenti altri componenti (bottoni e textbox). Il problema è che quando avvio l'evento di creazione dei nuovi tab questi vengono creati ma con una dimensione molto più ppiccola di quanto richiesta e a sua volta anche i componenti vengono ridisegnati di misura più piccola. Posto la funzione delegata a creare i tab, questa viene chiamata ricorsivamente a secondo di quanti tab deve creare:


codice:
private void creaTab(Opera op)
        {
            //aggiungo opera alla lista

            listaOpere.Items.Add(op);

           
            Button video = new Button();
            Button audio = new Button();
            Button back = new Button();
            TextBox descrizione = new TextBox();

            TabPage tab2 = new TabPage();


        
            tab2.SuspendLayout();
            this.deviceTab.SuspendLayout();
            this.tabOpera.SuspendLayout();
            this.tabControl.SuspendLayout();
            this.SuspendLayout();

            tab2.BackColor = System.Drawing.SystemColors.GrayText;
            tab2.Location = new System.Drawing.Point(4, 25);
            tab2.Name = op.nome;
            tab2.Size = new System.Drawing.Size(232, 273);
            tab2.Text = op.nome;





            if (op.pathVideo != "null")
            {
                // configuro il bottone video
               
                video.Font = new System.Drawing.Font("Courier New", 8F, System.Drawing.FontStyle.Bold);
                video.Text = "scarica video";
                video.Location = new System.Drawing.Point(7, 139);
                video.Size = new System.Drawing.Size(98, 26);
                video.Click += new EventHandler(downloadVideoAudio);
                video.Tag = op.pathVideo;
                tab2.Controls.Add(video);

            }
            if (op.pathAudio != "null")
            {
                // configuro il bottone audio
             
                audio.Text = "scarica audio";
                audio.Font = new System.Drawing.Font("Courier New", 8F, System.Drawing.FontStyle.Bold);
                audio.Location = new System.Drawing.Point(118, 139);
                audio.Size = new System.Drawing.Size(98, 26);
                audio.Click += new EventHandler(downloadVideoAudio);
                audio.Tag = op.pathAudio;
                tab2.Controls.Add(audio);


            }


       
            back.Font = new System.Drawing.Font("Courier New", 8F, System.Drawing.FontStyle.Bold);
            back.Location = new System.Drawing.Point(7, 201);
            back.Name = "button3";
            back.Size = new System.Drawing.Size(209, 26);
            back.TabIndex = 5;
            back.Text = "Back";
            back.Click += new EventHandler(back_clk);
            tab2.Controls.Add(back);


            

            descrizione.BackColor = System.Drawing.SystemColors.GrayText;
            descrizione.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
            descrizione.Font = new System.Drawing.Font("Tahoma", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))));
            descrizione.Location = new System.Drawing.Point(7, 7);          
            descrizione.Multiline = true;
            descrizione.Name = "textBox1";
            descrizione.ReadOnly = true;
            descrizione.Size = new System.Drawing.Size(209, 121);
            descrizione.TabIndex = 3;
            descrizione.Text = op.descrizione;
            descrizione.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
            descrizione.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;

            tab2.Controls.Add(descrizione);

            //carico immagine

            /* PictureBox pictureBox1 = new PictureBox();
             pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
             pictureBox1.Image = new System.Drawing.Bitmap(op.pathImg);
             pictureBox1.Location = new System.Drawing.Point(7, 7);
             pictureBox1.Name = "pictureBox1";
             pictureBox1.Size = new System.Drawing.Size(226, 119);

             tab2.Controls.Add(pictureBox1);*/

            tabControl.SuspendLayout();
            this.SuspendLayout();


            this.tabControl.Controls.Add(tab2);




            this.tabOpera.ResumeLayout(false);
            this.deviceTab.ResumeLayout(false);
            tab2.ResumeLayout(false);
            this.tabControl.ResumeLayout(false);
            this.ResumeLayout(false);


        }