Problema panel e "public sub"

martedì 23 settembre 2008 - 09.16

HavanaMan Profilo | Junior Member

Ciao, mi sono iscritto solo oggi, e avrei una domandona per voi.

Sto creando una piccola applicazioncina con visual studio express 2008 (vb.net) e avrei bisogno di qualche suggerimento.

L'applicazione ha poche pretese, database access e interfaccia grafica, la mia domanda è sull'uso dei pannelli.

Io creo nella mia form N pannelli che devono sostituirsi uno con l'altro alla pressione di un bottone.

PROBLEMA! Se creo un pannello sopra l'altro della stessa dimensione usando per esempio:

panel1.visible = true
panel1.visible = false

e in un altro bottone il contrario mi da problemi, l'unico modo che ho trovato è farlo più piccolo e non "uno dentro l'altro" e poi riposizionarlo e ridimensionarlo con size e location.

Qualche suggerimento?

Secondo probelma, click di un X bottone (in form1), si apre con showdialog un form di immissione, immetto il risultato e richiamo per esempio:

form1.riempiTabella()

e in form1 ovviamente ho public sub riempiTabella()....il problema è che ogni tanto aggiorna ogni tanto no!!!! perchè????????

cosa sbaglio?

Grazie in anticipo
Luca

sanbiz Profilo | Senior Member

>PROBLEMA! Se creo un pannello sopra l'altro della stessa dimensione
>usando per esempio:
>panel1.visible = true
>panel1.visible = false
>e in un altro bottone il contrario mi da problemi,

Perdonami, ma non ho proprio capito che problema dia? Ti genera un errore? Non ti rende visibile il panel desiderato? Altro?

>l'unico modo
>che ho trovato è farlo più piccolo e non "uno dentro l'altro"
>e poi riposizionarlo e ridimensionarlo con size e location.

Stessa considerazione di prima. Non capisco.

>e in form1 ovviamente ho public sub riempiTabella()....il problema
>è che ogni tanto aggiorna ogni tanto no!!!! perchè????????
>
>cosa sbaglio?

Difficile a dirsi, prova a postare qualche riga di codice, forse risulta più chiaro.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

HavanaMan Profilo | Junior Member

appena torno a casa posterò il codice.


per spiegarmi bene, creo un panel1 e un panel2 nella stessa identica posizione uno sopra l'altro come fossero due pagine che alla pressione di un bottone se ne attiva una delle due, e con un altro bottone l'altra.

i due bottoni fanno questo lavoro:

panel1.visible = true
panel2.visible = false

e

panel2.visible = true
panel1.visible = false

pero' nel bottone uno la cosa funziona nel bottone due non va e invece di vedere panel2 attivo non vedo nulla.

Forse questo non è il modo migliore per gestire il template di un applicazione, avete qualche suggerimento?

Jok83 Profilo | Junior Member

Premetto che non sono un esperto..però credo che se metti panel2 all'interno di panel 1 nel momento in cui lo rendi non visibile annulli tutto ciò che sta al suo interno...forse ti conviene usare un tabcontrol e visualizzi in base al pulsante premuto..

HavanaMan Profilo | Junior Member

Il problema che non volevo usare un tab control ma proprio creare un programma dove vedi SOLO quello che chiedi con la pressione del pulsante.

Penso si possa fare, la domanda è come.

e sembra che in effetti il problema dei panel è quello che dici tu quindi l'unica è fare dei panel SEPARATI (ovvero non uno sopra l'altro) e quando si clicca il bottone ridimensionarli e posizionarli nella posizione voluta, cosi sembra funzionare, ma se ci fossero delle soluzioni migliori sono tutto orecchie

ciao
L.

sanbiz Profilo | Senior Member

>per spiegarmi bene, creo un panel1 e un panel2 nella stessa identica
>posizione uno sopra l'altro come fossero due pagine che alla
>pressione di un bottone se ne attiva una delle due, e con un
>altro bottone l'altra.
>
>i due bottoni fanno questo lavoro:
>
>panel1.visible = true
>panel2.visible = false
>
>e
>
>panel2.visible = true
>panel1.visible = false
>
>pero' nel bottone uno la cosa funziona nel bottone due non va
>e invece di vedere panel2 attivo non vedo nulla.

Il motivo è certamente il fatto che in realtà panel2 è contenuto in panel1 e se rendi panel1 invisibile, rendi anche panel2 di conseguenza tale.
Un sistema rapido è quello di non sovrapporli e riposizionarli al momento della loro visualizzazione.

Per una miglior organizzazione visiva, prova ad utilizzare il tabcontrol potrebbe fare al caso tuo.

>Forse questo non è il modo migliore per gestire il template di
>un applicazione, avete qualche suggerimento?
>

--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

HavanaMan Profilo | Junior Member

Grazie i tab volevo evitarli al posto del pannello , ma magari tenerlo come risorsa da usare dentro un panel nella singola "pagina" perchè tab dentro tab non mi piace.

Cmq allora la soluzione da me pensata è giusta, è solo un po noioso lavorare in quel modo per una questione di spazi di lavoro :P

arghhhhhhhhhhhhh edit visto ora che non si possono levare i bordi :'( così la mia idea di layout va a farsi benedire

grazie

sanbiz Profilo | Senior Member

>Il problema che non volevo usare un tab control ma proprio creare
>un programma dove vedi SOLO quello che chiedi con la pressione
>del pulsante.

Puoi fare la stessa cosa anche con il tabcontrol: una volta che li hai disegnati a design-time quando mandi l'appricazione in run-time ti rimuovi
tabcontrol.TabPages.remove(mioTab)

e poi aggiungi solo quello che vuoi visualizzare:
TabControl1.TabPages.Remove(mioTab)

TabControl1.TabPages.Add(mioTab)


--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

HavanaMan Profilo | Junior Member

ho provato al volo ora a fare una prova, non è male, sicuramente per lavorarci è piu facile che con i panel, visto che hai sempre il design a grandezza naturale

unica cosa non mi piace la linguetta nel tabcontrol ma vabbè, me la farò piacere

thx

HavanaMan Profilo | Junior Member

Il problema dei panel è risolto, bisogna fare come si pensava, ovvero ridimensionare il panel e chiamare il panel che serve alla pressione del tasto

ora il problema risieda in questa situazione

Form principale -> apro una form "popup" dove inserisco un entry nel db (access) -> alla pressione del tasto salva inserisci l'entry con una query insert ricaricare il metodo che nella form principale riempe una tabella (riempiStrumento())

purtroppo inserisce la query nel db ma ogni tanto carica i dati con già la entry nuova e altre volte no.

posto un po di codice:

wCreaStrumento.ShowDialog()

' nel form del nuovo elemento
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

il metodo wDesktop.riempiCategoriaStrumento("") è cosi

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

qualche idea del perchè a volte non mi mostra la tabella con già la nuova entry
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5