Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[Vb.net]Probleema strano sulle Form
giovedì 08 luglio 2004 - 08.35
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
gio 8 lug 2004 - 08:35
Ciao a tutti..
Ho creato in un progetto, dalla mia Form pricipale, un tast "avanti" (>>) che mi apre una seconda Form; dalla seconda form identica cosa, tasto ">>" che mi apre una terza form.
Sintassi dell' evento Click presente in ognuna delle 2 form:
Dim Newfrm As New printReport ' printReport è il nome di una delle 2 form create
Newfrm.ShowDialog()
Il problema che mi trovo è chhe chiudendo la terza form(sia con la X in alto a dx, che con un tasto che esegue il comando Me.close, e persino impostando il tasto nella proprietà Cancelbuttn della form), mi chiude anche la seconda form e torna direttamente alla prima.
Eseguendo passo passo vedo che esce dalla procedura di click del tasto, ma non riesco a capire cosa mi fa chiudere la seconda form.
Specifico che nelle form ci sono normalissimi controlli tipo caselle di testo, listview ecc..
provando con 1 progetto nuovo, e facendo la stessa cosa con 4 form vuote, senza controlli tutto funziona correttamente..
Qualche idea?
Grazie a tutti...
Andy
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 8 lug 2004 - 09:36
devi fare così:
ewfrm.ShowDialog(Me)
Ciao
Fabio
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
gio 8 lug 2004 - 11:44
=(
Niente...ho provato ma continua a chiudermi anche il secondo form..non riesco proprio a capire...
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 8 lug 2004 - 16:58
Ma è molto strano,
comunque prova a ricreare una semplice form, non sfruttare la proprietà cancelbutton e su un pulsante gli imposti il codice Me.Close() mentre per aprire la form utilizzo sempre il tuo codice: Dim prova as New Frm_prova prova.ShowDialog(me)
Fammi sapere
Ciao
Fabio
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
ven 9 lug 2004 - 08:08
Provato anche quello..niente da fare...e la beffa addirittura sta nel fatto che nella 3a form io apro un'ulteriore Form con solamente una ComboBox, la quale con lo stesso identico metodo viene aperta e richiusa regolarmante, ritornando alla sua form padre.
Per ora ho "aggirato" il problema creando una flag, che setto vera solo nela caso in cui l'utente prema il tasto Back, intercetto l'evento Closing e se la flag è vera lascio fare, se no lo blocco.
non è il massimo, anche perchè se un utente vuole chiudere la Form con il tastino X della Form non glielo permette..
Tristezza.... =)
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 9 lug 2004 - 09:42
Andy,
mi spiace ma come ti ho detto questo problema non mi si è mai posto di fronte, le ipotesi per risolverlo sono quelle che ti ho postato, nel caso mi dovessero venire in mente altre idee ti faccio sapere
Ciao
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 9 lug 2004 - 10:22
Caro Andy, da quello che leggo, il trucco ci deve essere, ma sicuramente è nascosto bene. Sono convinto che se postassi un po' di codice potremmo risolverlo. Oppure....se nn è un problema per te, puoi postare il progetto qui: alex@aeaprato.it Gli darò un'occhiata volentieri e sono convinto che il trucco salterà fuori.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 9 lug 2004 - 10:25
Ah....mi raccomando,tutta la cartella del progetto: file .sln ecc..., così da poterlo lanciare senza ulteriori formalità. Se nn lo hai mai fatto prima, fai un test. Sposta in una cartella di invio tutto quanto vuoi mandare e poi prova a lanciare il tuo programma pescandolo in quella cartella. Dovrebbe essere un buon test! Ciao
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
ven 9 lug 2004 - 11:38
Intanto vi ringrazio mille ragazzi, non preoccupatevi..è già tanto che mi rispondiate cosi in fretta ;)
Purtroppo postare codice non credo posa servire, in quanto è una serie di form, aperte con frm.showdialog(Me) e chiusa con Me.close, contenenti normalissimi controlli tipo combobox e listview, come già in precedenza ho fatto in altri progetti..non perchè sia "geloso" di cio che scrivo o altre cose simili, semplicemente non cè nulla di "strano" nelle form, non un datagrid, non un adapter, ho delle query ma editate da codice e passate a dei datareader (ma ciò non credo influisca sulla form).
Alex "mi inchino" per la tua disponibilità, ma anche inviarti il progetto mi risulta impossibile, in quanto lavoro su più tabelle Sql in un database aziendale, che come potrai ben capire non posso divulgare, sia per motivi di proprietà, sia per problemi di spazio fisico ^_^..e se escludo la parte di lavoro su Sql in pratica ho la form con solamente dei controlli vuoti...
Purtroppo ora ho anche problemi di tempo, e non posso perdermi troppo su questa cosa, intanto vi ringrazio ancora, appena ho finito il progetto mi sa che mi ricreo le form e passo passo vedo cosa mi da questo problema...in attesa se aveste altre idee..sono sempre aperto a suggerimenti...
Ciao a tutti..
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 9 lug 2004 - 12:21
Capisco il tuo problema nel postare il tutto. Nn mi resta che augurarti 'in bocca al lupo' e....facci sapere cos'era quando lo avari trovato. Siamo curiosi! ;-)
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 9 lug 2004 - 12:28
Una cosetta, che forse nn c'entra alcunchè, ma ora nn ho tempo per provare. Solitamente il FormModale si chiude 'per finta' con DialogResult=...qualcosa.., in genere Cancel oppure OK e poi lo si fa chiudere, disporre e mettere = nothing al form che lo ha istanziato. Questo in genere serve per poter leggere il contenuto dei controlli del form modale. Io, nn uso Me.close sui form modali, ma uso MioformModale.DialogResult=Cancel
oppure imposto la proprietà di un pulsante in maniera da ottenere lo stesso risultato, ma questo mi sembra tu l'abbia già fatto......boh ?!
Auguroni!
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
ven 9 lug 2004 - 13:21
Si, in pratica faccio quello..se non premo il tasto di chiusura forzo una variabile boolean che mi blocca l'evento closing della form, con la riga
e.Cancel = True
Proverò...in caso trovo la soluzione statene certi che la posto..
Alla prossima!!!
Andy
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 9 lug 2004 - 22:22
Asp....fores c'è un qui,quo, qua ( o un qui pro quo....boh, io il latino mica lo conosco!)...io intendevo nel form che deve chiudersi non in quello che NON deve chiudersi. Il form modale, normalmente, scompare esembra chiudersi nn appena viene dato un valore opportuno alla sua proprietà DialogResult, così il codice torna alla riga successiva a quella in cui era stato imposto lo ShowDialog. Dovrebbe funzionare tutto comunque bene anche col close. Un dubbio....non è che nascondi il Form2 (anche lui lanciato come modale se nn ricordo male) con un me.hide, prima di lanciare, sempre come modale, il form3? A volte ho visto delle cose strane in questo senso, proprio perchè il ritorno di un form modale (sembra una chiusura, perchè restituisce il controllo al form che lo ha 'aperto'), avviene proprio nascondendosi e mi sembra di aver visto che se un form modale si nasconde (Me.Hide), almeno in talune situazioni si comporta come se si chiudesse. Nn posso verificarlo a fondo, ma, giusto per scrupolo, se per caso tu nascondessi la form intermedia, prova a non farlo e guarda se cambia qualcosa! Di più...nin zò! ;-)))
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
lun 12 lug 2004 - 11:29
No, non nascondo nulla, anche perchè in caso un utente potrebbe "spostare" la form attiva x dare un'occhiata ai dati sottostanti...
Però il dubbio viene a me ora...mettiamo che x qualche ragione strana il form mi si hidda e quindi resta in memoria(cosa che comunque non ritengo probabile, in quanto non risulta nella finestra di stack), come posso farlo rivedere di nuovo? con il .show?
Grazie mille Alex x lo sbattimento!!!
Ciaoo
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 13 lug 2004 - 10:48
Se nn mi ricordo male, se lo rendi di nuovo visibile ci ritrovi anche tutti i dati. Infatti la chiusura 'finta' del form permette il ritorno al form 'padre' (quello che lo ha reso visibile con lo showdialog) che tranquillamente può leggere i suoi controlli o le sue variabili pubbliche. Dopo di ciò, normalmente io provvedo a chiudere e disporre il form. Se invece dai ancora una volta Show o ShowDialog ( salvo verifica perchè mi sembra di averlo fatto ma è anche passato tanto tempo!) , te lo ritrovi come era prima della finta chiusura. Parlo di finta chiusura, intendendo quella che si verifica mediante l'assegnazione di un valore alla proprietà DialogResult. Quindi se non dai close, dispose e per sicurezza =Nothing al form, quello ti rimane bello e pronto a risaltare fuori. Se ripeti la istanziazione, prima di averlo chiuso davvero, probabilmente ti crea un altro oggetto form e così, piano piano, ti ritrovi con un esercito di Form nascoste. Almeno....così mi pare. Ciao e buon lavoro.
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
mar 13 lug 2004 - 11:28
mmm...concetto chiarissimo...però a me succede alla prima apertura della form figlio, non credo sia il mio caso..
Niente, questa cosa rimarrà un "insoluto clamoroso" nella mia carriera!!! :D
Grazie ancora ..
Ciao
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mer 14 lug 2004 - 07:35
Ucci, ucci, sento odor di pulsantucci!
Mi è venuto un dubbio clamoroso....per caso il lancio del terzo form modale, avviene nella routine di click di un pulsante? Se sì, questo pulsante ha la proprietà DialogResult=None, oppure ha un valore diverso, che quindi, alla fine dell'esecuzione della routine, ti causa anche la chiusura del Form?
Mi sembra un'ipotesi valida e probabile, dagli un'occhiata!
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
mer 14 lug 2004 - 08:13
TU SEI UN GENIO!!!!!!!!!!!!!!!!!!!!!!!!
Verissimo!!!! Per sbaglio, magari dopo troppe ore di lavoro, avevo impostato la proprietà Dialogresult dei tasti non so per quale motivo..
e poi, dando(eh, erroneamente, lo so) per scontato che nessuna proprietà del tasto fosse stata toccata, non ho controllato quel dettaglio..anche perchè sinceramente non pensavo mi chiudesse in auto la mia form aperta...che dire.. grazie mille, anche per la perseveranza!!!
Ciaoo
Andy
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mer 14 lug 2004 - 10:25
Troppo buono, troppo buono !!!!
Ciao e buon lavoro. :-)
Torna su
Stanze Forum
Elenco Threads
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 !