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);
}