C# Ridimensionamento automatico WinForm

mercoledì 23 febbraio 2011 - 20.25
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010

luca.santaniello Profilo | Newbie

Salve a tutti,

ho letto l'articolo ufficiale "Ridimensionamento automatico in Windows Form" (http://msdn.microsoft.com/it-it/library/ms229605.aspx) ma non riesco a mettere in pratica quello che ho letto, potreste darmi una mano a capire cosa sbaglio?

Ho creato una winform 1280x800. La win form contiene un panel vuotoche viene ancorato alla form. Ho creato 2 panel sempre di dimensioni 1280x800 che aggiungo a run time alla form.

Avvio il programma, si apre una piccola form, clicco su un button in esso contenuto. Al click sul button si apre la form suddetta con uno dei panel. Se la risoluzione è 1280x800, nessun problema, il panel occupa tutta l'area a disposizione così come l'ho creata. Se la risoluzione è più grande, invece, il panel occupa soltanto l'area 1280x800, tutto il superfluo non viene utilizzato.

Il form ed i panel hanno le seguenti property:
AutoScaleMode: Dpi
AutoSize: true
AutoSizeMode: GrowAndShrink

Aiutatemi a capire per favore che sto uscendo matto!

Grazie in anticipo a tutti


Luca Santaniello

AntCiar Profilo | Expert

Ciao.

usa anche

.Dock = Fill;
Cristian Barca

luca.santaniello Profilo | Newbie

Ti ringrazio prima di tutto per aver risposto alla mia richiesta di aiuto ma purtroppo continuo a non trovare la soluzione.

Il Form non ha la proprietà Dock. Il Panel vuoto che inserisco nel form invece si e quindi l'ho messo a Fill.

Quando parte il programma faccio una cosa del genere:

MioPanel myPanel = new MioPanel();
myForm.panel.Controls.Clear();
myForm.panel.Controls.Add(myPanel);

myPanel è stato costruito come UserControl e non ha la proprietà Dock.

Cosa sbaglio?

Grazie ancora
Luca Santaniello

AntCiar Profilo | Expert

>Ti ringrazio prima di tutto per aver risposto alla mia richiesta
>di aiuto ma purtroppo continuo a non trovare la soluzione.
>
>Il Form non ha la proprietà Dock. Il Panel vuoto che inserisco
>nel form invece si e quindi l'ho messo a Fill.
>
>Quando parte il programma faccio una cosa del genere:
>
>MioPanel myPanel = new MioPanel();
>myForm.panel.Controls.Clear();
>myForm.panel.Controls.Add(myPanel);
>
>myPanel è stato costruito come UserControl e non ha la proprietà
>Dock.
>
>Cosa sbaglio?
>
>Grazie ancora
>Luca Santaniello

Ciao.
il codice che usi è corretto. Io aggiungerei anche questo per completezza:

MioPanel myPanel = new MioPanel();
myPanel.Location = new Point(0,0);
myPanel.Dock = Dock.Fill;
myForm.panel.Controls.Clear();
myForm.panel.Controls.Add(myPanel);

In questo modo il tuo usercontro si "ancora" in automatico al contenitore (in questo caso alla form).
Ora occorre vedere all'interno dell'usercontrol se hai dato le proprietà di ridimensionamento ai controlli che ci sono dentro.
Per fare un test basta che apri in progettazione l'userControl e ne aumenti e diminuisci le dimensioni con il mouse. Se i controlli all'interno rimangono fermi allora non hai dato gli ancor, se si muovono allora il problema è un altro.

Ciao
Cristian Barca

luca.santaniello Profilo | Newbie

Grazie mille, grazie al tuo aiuto ho quasi raggiunto l'obiettivo... ho un altro problema però... il ridimensionamento delle label... ma il font non si adatta in proporzione?
Luca Santaniello

AntCiar Profilo | Expert

>Grazie mille, grazie al tuo aiuto ho quasi raggiunto l'obiettivo...
>ho un altro problema però... il ridimensionamento delle label...
>ma il font non si adatta in proporzione?
>Luca Santaniello

Ciao Luca. La label normalmente quando la disegni sulla form prende la proprietà AutoSize = true in automatico. Questo fa si che adatta in automatico la larghezza in base al testo. Se togli questa proprietà (autosize = false) puoi ancorare la label la contenitore in modo che si allarghi o restriga di conseguenza. Per il carattere in automatico non fa niente. Se voui potresti ascoltare l'evento SizeChanged della label e ricalcolare tu la dimensione del font e quant'altro.......

Ciao

Cristian Barca
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5