Anomalia aperture form

domenica 22 aprile 2012 - 22.58
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

Lucchinet Profilo | Newbie

Ciao a tutti.
In tanti anni non mi è mai successa una cosa di questo genere.
Ho un progetto con 43 Form.
Dal form principale (MDI) apro i vari form direttamente.
Tre form in particolare però, si comportano in modo anomalo.
Nell'ordine Form1,Form2,Form3 all'apertura, chiudono il precedente e poi si aprono.
Se inverto l'ordine questo non succede, "SOLO SE PARTO DAL Form3".
Es.
Apro FORM1 (OK), Apro FORM2 (dopo l'inizializzazione del Form2 nel momento che lancio lo show del From2, parte il Leave del Form1)
successivamente
Aperto FORM2 , Apro FORM1 (dopo l'inizializzazione del Form1 nel momento che lancio lo show del From1, parte il Leave del Form2)
e vanno avanti così a palleggiare.
Se invece Apro FORM3 come primo Form e poi gli altri, questo non avviene.

Qualcuno ha idea di cosa possa essere?
Grazie mille dei suggerimenti.

Nel codice non ci sono riferimenti a rispettivi form

Vinsent Profilo | Senior Member

Molto probabilmente ci sono degli eventi in "posti sbagliati" o che non verificano delle condizioni, con le informazioni che hai dato penso sia molto difficile risponderti adeguatamente...come minimo dovresti postare un pò di codice tipo come esegui:
>Nell'ordine Form1,Form2,Form3 all'apertura, chiudono il precedente
>e poi si aprono.
...puoi provare a creare un piccolo progetto che ricrea il problema, magari ti dà l' "illuminazione"!
Altrimenti vai di "F8" fino a trovare l' evento o la differenza con le altre Form che causa il problema.
ciao

Lucchinet Profilo | Newbie

Ho smanettato per un'ora almeno con F8, ma non trovo nessun riferimento nel Form2 al form1 per far scatenare l'evento Leave del Form1 all'avvio dello Show del Form2.

Comunque i forms nell form principale li richiamo così.

Private Sub ToolElencoBolle_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ToolElencoBolle.ItemClick
Dim Frm As New FrmElencoBolle(Me)
Frm.Show()
End Sub

Private Sub ToolElencoFatture_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ToolElencoFatture.ItemClick
Dim Frm As New FrmElencoFatture(Me)
Frm.Show()
End Sub

All'interno di ogni form c'è l'evento "New" (diciamo chè è molto simile in tutti i form)

Public Sub New(Optional ByRef Parent As Form = Nothing)
InitializeComponent()
DevExpress.Skins.SkinManager.EnableFormSkins()
Dim DB As String
Dim ClsImp As New ClsAvvio.ClsImpostazioni
DB = ClsImp.Valore(ClsAvvio.ClsImpostazioni.NomeCampi.DatabaseName)
Me.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" & DB & """"
If IsNothing(Parent) = False Then
MdiParent = Parent
End If
end sub

Come il debug, finisce l'evento "new" del form chiamato, allo scatenare dello "show" il debug (F8) passa sull'evento Leave del form aperto precedentemente.
Questo lo fa solo con FrmElencoBolle e FrmElencoFatture, non riesco a comprendere quale collegamento ci possa essere fra di loro.

Es.
Avvio FrmPrincipale
Avvio FrmElenoBolle (lo carica senza problemi)
Avvio FrmElencoFatture (processa il suo evento "New" e nel momento che processa il suo evento "Show", attiva l'evento "Leave" del FrmElencoBolle, chiudendolo e poi apre il FrmElencoFatture.

Con tutte le altre finestre non succede.
Se però, codice uguale a quello postato, apro prima FrmElencoNCFatture, questo scherzo non lo fa più, come se non andasse in tilt la gestione delle finestre MDIChild da parte del FrmPrincipale.

Spero di aver dato qualche informazione in più.

InsettoScoppiettato Profilo | Junior Member

Credo che sia ovvio che l'evento Leave nasca ogni volta che crei un unovo form. Dalla msdn:

Gli eventi Enter e Leave sono soppressi dalla classe Form. Gli eventi equivalenti nella classe Form sono gli eventi Activated e Deactivate. Gli eventi Enter e Leave sono gerarchici e consentono di scorrere la catena di controlli padre fino a quando non viene raggiunto il controllo appropriato. Si supponga, ad esempio, di disporre di un Form con due controlli GroupBox e che ciascun controllo GroupBox disponga di un controllo TextBox. Quando il punto di inserimento viene spostato da un controllo TextBox all'altro, viene generato l'evento Leave per i controlli TextBox e GroupBox e l'evento Enter per gli altri controlli GroupBox e TextBox.


POsta per favore il gestore degli eventi leave...

Alessandro Parma

Vinsent Profilo | Senior Member

>Credo che sia ovvio che l'evento Leave nasca ogni volta che crei
>un unovo form.
Più che ovvio...è normale routine...

Lucchinet Profilo | Newbie

SONO UN CO....NE!!!!

Stupidamente e senza farci caso, negli eventi Leave di quei due form che mi davano il problema , avevo messo un bel "Me.Close()".

Lo ripeto SONO UN CO....NE!!!!

Grazie per l'aiuto e mi scuso per avervi fatto perder tempo.

Alla prossima.
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