C# Ridimensionamento Form

lunedì 25 agosto 2008 - 12.58

and87 Profilo | Newbie

Salve a tutti,sto impazzendo con la grandezza di form e contro form...Non ce la faccio più...
Allora arrivo al dunque:
ho una Form chiamata Form1;
al suo interno viene istanziato un Control chiamato Panel1;
questo Panel1 estende la classe Panel:
a sua volta esso ha un Control chiamato Control1 che estende la classe Control.

Allora nel MainLoad della form faccio:
this.panel1 = new panel1();

poi metto
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;

Poi nel costruttore di Panel1 faccio:
this.Control1 = new Control1(); this.SuspendLayout(); this.Control1.BackColor = System.Drawing.SystemColors.ControlDarkDark; this.Control1.Location = new System.Drawing.Point(285, 17); this.Control1.TabIndex = 0; this.Control1.Visible = true; this.Resize += new System.EventHandler(this.Control1_Resize); this.ResumeLayout(false);


Nel Control imposto la grandezza come 176,144 e io vedo che invece la form assume sempre valore -1,-1...Perchè?
Ah dimenticavo...La chiamata al metodo.
Allora nella Form1 al click di un bottone faccio...
panel1.SetImp();

Il metodo SetImp a sua volta conterrà:
Control1.SetDimension();

SetDimension imposta i due valori che ho descritto sopra...i due valori sono randomici quindi non posso impostarli fissi,perxhè essi variano.
Spero di esser stato chiaro! Mi aiutate?
Grazie

Anonimo Profilo | Senior Member

Prova così e dimmi.

Panel p = new Panel(); p.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; p.Dock = System.Windows.Forms.DockStyle.Fill; p.Controls.Add(new Control()); this.SuspendLayout(); p.Controls[0].BackColor = System.Drawing.SystemColors.ControlDarkDark; p.Controls[0].Location = new System.Drawing.Point(285, 17); p.Controls[0].TabIndex = 0; p.Controls[0].Visible = true; this.Controls.Add(p); this.Resize += new System.EventHandler(this.Control1_Resize); this.ResumeLayout(false);

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

and87 Profilo | Newbie

Dove vado ad inserire questo codice?

Grazie

Anonimo Profilo | Senior Member

Nel costruttore del form va benissimo.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

and87 Profilo | Newbie

No niente da fare. Allora ti spiego una cosa. Quello che sto facendo è catturare uno streaming video da una camera. Allora io ho formato cosi il progetto:

-------------------------------------
| FORM |
| ----------------------------- |
| | MAINPANEL | |
| | -------------------- | |
| | | CAMWIN | | |
| | --------------------- | |
| | | |
| ----------------------------- |
------------------------------------

Form è la form,il mainpanel è il pannello principale che all'interno ha un CameraWindow.
CameraWindow è il controllo che cattura lo streaming video.
Quando vado ad apportare le modifiche di grandezza camerawindow in debug esso funziona correttamente e infatti sia il mainpanel che la form assumono la grandezza della camerawindow. Se invece lancio senza debug il tutto non funziona.Il pannello non si ridimensiona come la camerawindow.
Questo è il codice dove vado a settare le proprietà sia al main che alla form.
cameraWindow1.Camera = camera;//setta le caratteristiche della telecamera cameraWindow1.UpdatePosition();//apporta le modifiche di grandezza this.mainPanel.SuspendLayout(); this.SuspendLayout(); this.mainPanel.Size = cameraWindow1.Size; this.mainPanel.ResumeLayout(false); this.Size = this.mainPanel.Size; this.ResumeLayout(false);
Il controllo che fallisce è il seguente:
// get frame dimension if (camera.LastFrame != null) { width = camera.LastFrame.Width; height = camera.LastFrame.Height; } camera.Unlock();
Grazie

and87 Profilo | Newbie

Allora,non mi puoi aiutare?
uffa

Anonimo Profilo | Senior Member

Allora ti dico per esperienza diretta, lo streaming video viene visto comunque come un flusso di immagini, pertanto è consigliabile usare una picturebox senza usare pannelli o simili, mettila in autosize a true e ti togli il problema, prova e dimmi.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

and87 Profilo | Newbie

Ok ora funziona.Grazie.
Però mi manca l'ultimo passaggio.La form a questo punto non assume i valori del mainpanel,perchè?
Cioè funziona solo se le dimensioni del mainpanle sono ad esempio 704,586 ma se sono più piccole,tipo 176,144 no.
Questo è il codice della form:
this.AutoSize = true; this.ClientSize = new System.Drawing.Size(168, 110); this.Controls.Add(this.mainPanel); this.MinimumSize = this.mainPanel.Size; this.Name = "MediaViewer"; this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; this.Load += new System.EventHandler(this.MediaViewer_Load); this.Closing += new System.ComponentModel.CancelEventHandler(this.MediaViewer_Closing); this.mainPanel.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout();

and87 Profilo | Newbie

Allora non sai come aiutarmi? Ti prego...
Il problema è come faccio a dare alla form la grandezza del pannello?
Cioè io parto con le dimensioni 100,50.
Durante il run del programma questa grandezza puo diminuire e quindi diventare 75,30. Tutto ciò che io faccio però per reimpostare la grandezza alla form esso non viene effettuato,perchè?

Grazie anticipatamente

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5