Newsgroup: it.comp.lang.visual-basic
Titolo: [.Net] Gestione del ridimensionamento con gli splitter

Ciao.
Ho un form con due controlli. Un treeview nella parte sinistra, con
proprietà Dock a Left, uno splitter con proprietà Dock a Left, e una griglia
nella parte destra.
Quando sposto lo splitter l'albero e la griglia vengono ridimensionati
correttamente, senza scrivere linee di codice.
Il mio problema è che avrei bisogno di una piccola aera nella parte alta
della finestra in cui inserire due label, una proprio sopra al treeview ed
una sopra alla griglia.
Queste label vengono però nascoste perchè quando imposto il Dock dei
controlli essi si ridimensionano utilizzando tutta l'altezza del form.
Esiste un modo per evitare questo comportamento? Per esempio facendo in modo
che il controllo "dockato" non venga ridimensionato fino al top del form ma
che si possa lasciare un'area libera.
Grazie
Ciao
Skysurfer

 Ciao.
(snip)
Nelle parti destra e sinistra, invece di mettere semplicemente i controlli,
metti dei panel, dockati (brutta parola, neh?) uno a left e l'altro a fill,
poi, ad esempio nel destro, metti il treeview ancorato a
sinistra+destra+alto+basso, ma con uno spazio sopra, dove metterai la tua
label, ancorata destra+alto.
Discorso analogo per la parte sinistra.
Al limite, potresti separare ciascuna delle due parti del form con un
successivo splitter, se ti serve, e continuare il giochetto all'infinito.
Altra interessante caratteristica del panel, è che può essere scrollabile in
automatico.
hth
Salutoni
Sergio

 del form ma che si possa lasciare un'area libera.
A parte il fatto che si può fare come ha detto Sergio, per risolvere lo
stesso problema ho fatto come hai detto tu qui, c'è una proprietà che ti
permette di lasciare un'area libera a piacere, DockPadding.
--
ale
http://www.sen.it

 che ti permette di lasciare un'area libera a piacere, DockPadding.
Questa mi era, sinceramente, sfuggita.
Perņ, se io metto la mia label direttamente sulla form, nello spazio
lasciato libero dal mio controllo dockato, come reagisce questa allo
spostamento dello splitter?
Salutoni
Sergio

 spostamento dello splitter?
Uno, non ho ben capito la domanda :-(
Due, sono senza il mio VS .Net, per cui anche se l'avessi capita, non potrei
fare la prova ;-)
--
ale
http://www.sen.it

 potrei fare la prova ;-)
Se avessi avuto con me il mio 
vb.net
 avrei postato direttamente la soluzione
;-)
Salutoni
Sergio

Grazie ad entrambi per la risposta.
Inzialmente, avevo pensato anch'io di raggruppare i controlli dentro a due
Panel, ma mi sono accorto (può darsi che abbia sbagliato qualcosa io...) che
il panel non viene ridimensionato in automatico dallo splitter. Cosi' ho
provato con i GroupBox ma con l'indentico risultato. Nel dettaglio ho fatto
così: ho inserito un groupbox con dock a sx, ho inserito lo splitter... e
già qui ho notato qualcosa di strano. Lo splitter invece di "appiccicarsi"
al lato destro del groupbox (come succede per esempio con il treeview) si è
appiccicato al lato sinistro del form, come se il groupbox non ci fosse.
Infatti poi in esecuzione il ridimensionamento non funzionava.
Adesso proverò con la proprietà DockPadding (che avevo letto, ma di cui mi
ero dimenticato l'esistenza!) come mi ha consigliato Ale.
Grazie e ciao
Skysurfer

 al lato sinistro del form, come se il groupbox non ci fosse.
Guarda che anche gli splitter hanno una proprietà dock: essa è a left di
default, ma puoi cambiarla.
Salutoni
Sergio

 ha scritto nel messaggio
news:b7ituf$1ehsm$1...@ID-173193.news.dfncis.de...

Sì, lo so.... ma penso che sia giusto lasciarla a sx per ridimensionare i
controlli in questo caso.
Tu come imposteresti le proprietà Split di un GroupBox (e dello Splitter)
allineato a sx del form che deve essere ridimensionato automaticamente
tramite uno split?
Grazie
Ciao
Skysurfer


E' quello che ho appena provato. Le label rimangono dove sono! Infatti anche
lo split non arriva fino al bordo superiore del form.
Ciao
Skysurfer

 automaticamente tramite uno split?
Mi sono perso, non capisco più dove vuoi arrivare..... mi sembrava tu fossi
partito da un controllo (generico) sulla sinistra del form, due controlli
sulla destra....
La soluzione era:
1) posizionare il controllo che deve stare a sinistra, con dock a left
2) mettere lo splitter, con dock a left
3) mettere un panel sulla destra, con dock a fill
4) mettere i due controlli all'interno del panel, ancorandoli a piacere (in
questo modo saranno ancorati al panel e potranno modificare posizione e/o
dimensione al variare del panel.
Poni attenzione all'ordine delle operazioni!
L'inserimento degli splitter, nella fase attuale, non è una cosa agevole, e
ti costringe a seguire passo passo questa procedura (puoi anche giocarci un
attimo, in realtà, ma devi fare un sacco di cose per capire bene come
funziona)
hth
Salutoni
Sergio

 Poni attenzione all'ordine delle operazioni!
Che tra le altre cose, e non l'ho trovato scritto da nessuna parte, l'ordine
delle operazioni influenza anche lo z-order dei vari oggetti, che quando si
ha a che fare con gli accoppiamenti di oggetti tramite Dock si rivela essere
una cosa piuttosto importante..
Per SkySurfer:
Cerca la riga di codice con:
this.Controls.AddRange(new System.Windows.Forms.Control[] { .. }
in che ordine appaiono all'interno delle graffe i controlli che ti
interessano?
--
ale
http://www.sen.it


Ok... così funziona, ma se nella parte sx hai un solo controllo che non sia
un panel.
Quello che volevo ottenere io era:
Parte sx: treeview con sopra una label
Parte dx: grid con sopra una label
Per la parte dx non ci sono problemi: metto la grid e la label nel panel
(che ha dock a fill) e funziona.
Ma se nella parte sx metto un panel con dock a left, ecco che lo split non
si aggancia al panel (come farebbe invece con il treeview).
Comunque l'ho risolto utilizzando la proprietà DockPadding del form e
ridimensionando via codice le label superiori.
Grazie ancora.
Ciao
Skysurfer

 Parte dx: grid con sopra una label
allora il discorso č:
1) primo panel a sx dockato sx
2) controllo splitter dockato sx
3) panel dx dockato fill
poi metti nei due panel quello che vuoi.
Salutoni
Sergio


Mio Diooo.... che somaro che sono!!!
Per inserire lo Splitter facevo doppio click e cosi' andava a finire DENTRO
a Panel1!!! Per forza che poi non funzionava!
Grazie mille per la pazienza e scusate la tontaggine!
Ciao
Skysurfer