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

Rispondi quotando