TabControl e invisibilità delle TabPages

giovedì 10 aprile 2008 - 19.26

ravalon Profilo | Expert

Salve a tutti

Ho inserito in un mio progetto con VB 2005 un TabControl che contiene alcune TabPages...

Usandolo per una procedura in stile Wizard, vorrei che man mano fossero visibili solo le TabPages che desidero io...

Purtroppo però non riesco a nasconderle, neppure usando i vari metodi HIDE che ho trovato....

Sapreste darmi una dritta ?

Inoltre secondo voi è funzionale usare un TabControl per una procedura Wizard ? O c'è qualcosa di migliore ?

freeteo Profilo | Guru

ciao,

>Purtroppo però non riesco a nasconderle, neppure usando i vari
>metodi HIDE che ho trovato....
si effettivamente anche io avevo lavorato togliendole con il metodo "Remove":
tabMain.TabPages.Remove(tab1)

e quando mi serviva rimetterla

tabMain.TabPages.Add(tab1);



>Inoltre secondo voi è funzionale usare un TabControl per una
>procedura Wizard ? O c'è qualcosa di migliore ?
anche io uso questa tecnica, solo che tipicamente lascio tutte le tab, e lavoro impostando il selectedindex della tabPrincipale.
In testa, ci metto una bella label con sfondo, alta a sufficienza da nascondere l'intestazione (le linguette delle tab) in modo da non farle cliccare all'utente.
Per "camuffarle" di piu' con la form, imposto "Appearance=FlatButtons" cosi' fa proprio la funzione di un pannello...


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

SI però è strana questa cosa...nel vecchio VB non c'era questo problema...

Purtroppo non posso fare un remove dato che dentro ogni tabpage ci sono diversi controlli che sarebbe quantomeno dura ricreare via codice ogni volta...

Ad ogni modo un metodo alternativo me lo consigliereste ?

Rik142 Profilo | Junior Member

Io ti consiglio di usare semplicemente degli user control simulando l'attività di passare da un tab all'altro usando dei button.
Io avevo il problema anche di tenere bloccato alcuni tab e non c'era modo. In questa maniera sono riuscito nell'intento.

freeteo Profilo | Guru

>SI però è strana questa cosa...nel vecchio VB non c'era questo
>problema...
eh qui sei in .net, le cose cambiano...e di parecchio...a parte qualche piccola scocciatura dovuta al passaggio di tecnologia, vedrai che ti troverai molto bene piu' avanti...


>Purtroppo non posso fare un remove dato che dentro ogni tabpage
>ci sono diversi controlli che sarebbe quantomeno dura ricreare
>via codice ogni volta...
no ma guarda che il "remove" = "toglierlo dalla collezione" ma non eliminarlo!
Puoi fare remove e Add, tanto la variabile "tabxxx" ha tutti i controlli come li hai fatti tu da designer...non c'e' questo problema!


>Ad ogni modo un metodo alternativo me lo consigliereste ?
io mi sono trovato bene con questo, tanti giri di pannelli da gestire la posizione/visibilita' mi sembra si fattibile, ma piu' scomodo

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

Scusa mi puoi fare un esempio di codice ? cioè dici che col .remove gli oggetti dentro alla TabPages rimangono intatti quando faccio poi l' .add ?

freeteo Profilo | Guru

>cioè dici che col .remove
>gli oggetti dentro alla TabPages rimangono intatti quando faccio
>poi l' .add ?
esatto, fai presto, se tu hai una tabPage1 dentro ad un tabControl1, quando fai :
tabControl1.TabPages.Remove(tabPage1);

e poi tutto torna come era a design (con i controlli, gli eventi etc...) facendo:

tabControl1.TabPages.Add(tabPage1);

perche' tabPage1 è un'istanza (oggetto) della classe TabPage, che dentro ha tutti i suoi controlli i quali hanno a loro volta i loro eventi, proprieta' etc...
Togliere dalla collezione TabPages, significa che il controllo che gestisce le pagine (appunto il TabControl principale) non le visualizzera' piu' a video, ma l'oggetto in memoria e quindi se viene aggiunto (a lui o ad un altro tabControl) verra' visualizzato a video ma non viene "cancellato"...come ti ripeto viene tolto dalla collection.

Quindi vedi te se vuoi fare qualche altro modo, perche' ti trovi meglio, ma cmq rimane che questo problema specifico di perdere controlli non c'e'.

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

Ok grazie mille per la dritta !

ravalon Profilo | Expert

Aggiornamento...se faccio il remove della tabpage me la toglie, ma poi non riesco più ad aggiungerla....

mi fate un esempio di codice per favore ?

freeteo Profilo | Guru

ecco un esempio in c#.
come vedi premendo i 2 bottoni aggiungi e togli le 2 tab presenti nel tabcontrol principale...non spariscono

Come fai tu a non trovarle piu'? confronta con questo esempio e poi magari posta il tuo codice...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

no ok nel pomeriggio ho provato di nuovo e funziona...grazie e scusate
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5