Help : mon visual basic plante quand j'ai 2 forms

Résolu
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 - 1 janv. 2013 à 11:28
 Utilisateur anonyme - 2 janv. 2013 à 22:45
Bonjour,

J'ai un problème avec visual basic 2008 que j'utilise.
Je ne sais pas si ça vient de mon code ou du logiciel. Je n'ose pas faire de mise à jour car il faudrait que je réapprenne un nouveau code et comme je débute, c'est trop galère, j'ose même pas imaginer !

Alors voilà, je crois que ça se produit quand j'essaie de créer un logiciel avec 2forms. Ou bien à la fin d'une journée entière de programmation... ! Chaque fois que je lance le debug et le test du logiciel, quand je ferme tout, visual met 5 minutes au moins avant d'être accessible de nouveau. Voire même il faut redémarrer l'ordi ! Si je réessaie de lancer le debug a ce moment là, il me dit "visual studio n'a pas pu copier un fichier de support à cet emplacement : c:/... /logiciel.vshost.exe'. Vérifiez que le chemin d'accès existe et n'est pas en lecture seule."

j'ai cherché sur le net et modifié 2 choses:
-application/mode d'arrêt : à la fermeture du dernier formulaire
- ajout d'un menu avec l'option "quitter " par un end.

Rien ne fait : plantage à chaque debug. Impossible de continuer!! :(

Pourriez-vous m'aider svp?
Merci !

26 réponses

cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
2 janv. 2013 à 18:06
Problème résolu!!

Réponse trouvée ici :
http://social.msdn.microsoft.com/Forums/lv/msbuild/thread/9ba87e8a-91d9-4cf5-baa7-f9cdbcc8715c

je l'avais lu 100 fois mais jamais jusqu'au bout pcke c'est en anglais :( pffff, si j'avais su !!

Donc le problème venait de visual basic!!

Dans les propriétés de l'appli --> déboguer-->décocher "activer le processus d'hébergement Visual studio"

C'est tout!!!
3
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
2 janv. 2013 à 17:53
En fait, j'ai trouvé où ça coince vraiment !

Quand je ferme mon appli de vb et que je la rouvre dans visual basic, c'est là que ça ne marche plus! Je fais une appli qui fonctionne bien. Je la ferme avec vb. Je la rouvre. Je la lance une fois. Je quitte normalement. Je veux la relancer, ça ne fonctionne plus.
1
Utilisateur anonyme
1 janv. 2013 à 15:29
Bonjour,

C'est difficile de répondre sans avoir sous les yeux le code utilisé pour fermer proprement ton application.
End est une méthode plutôt barbare pour fermer une application.
Tu peux tenter d'énumérer les formulaires encore ouverts avec :
My.Application.OpenForms

Et ensuite d'invoquer leur fermeture proprement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 15:42
End est une méthode plutôt barbare pour fermer une application.

Bonjour, banana32,
pas seulement "barbare" dans certains cas. Nous ne voyons en effet pas le code utilisé et il a son importance, notamment en cas d'utilisation de sous-classement ... Car interrompre un sous-classement par un End ===>> on peut dire bonjour aux dégâts les plus divers et variés !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
1 janv. 2013 à 16:38
Bonjour,
Merci de vos réponses!

Quel code voulez vous? Je ne peux pas tout vous mettre...
Au départ, j'avais une seule form et tout allait très bien. Donc ça ne vient pas de mon code sur la 1ère.
Puis j'ai créé une 2ème form et je n'ai pas pu aller très loin...
par un bouton sur la 1ère form je fais apparaître la 2ème et disparaître la 1er avec :
form1.hide()
form2.show()

et avec un bouton sur la 2ème je fais le contraire:
form1.show()
form2.hide()

J'ai essayé avec un form.close() mais ça ne change rien...

Sinon je quitte mon application avec la croix. Que je quitte sur la 1ère ou la 2ème form, ça ne change rien...

le sous classement dont tu parles, ucfoutu, je ne sais pas ce que ça signifie.Peut-être que j'en ai fait?!

banana32, comment j'utilise le code que tu m'as donné? Tu sais, je débute, je ne connais pas grand chose... Qu'est-ce que tu appelles une "fermeture propre" ? Cliquer sur la croix ça n'est pas bon?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 janv. 2013 à 17:28
Bonjour
form1.hide()
la form1 dispararait peut etre à ta vue
mais elle est toujours en mémoire

Chaque fois que je lance le debug et le test du logiciel, quand je ferme tout


regarde dans le taskmanager(gestion de tache)
est ce que ton application est toujours en éxécutions ?
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
1 janv. 2013 à 18:19
elle ne devrait pas être en exécution vu que j'ai choisi
"-application/mode d'arrêt : à la fermeture du dernier formulaire "

non??

je ne reconnais rien dans taskmanager aujourd'hui mais une autre fois où ça m'étais arrivée, oui, mon application y était. Plutôt normal, vu qu'elle continue à tourner alors qu'elle ne devrait pas.

Comment faut-il faire pour que tout se ferme quand je clique sur la croix?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 janv. 2013 à 19:54
Simplement envois tout ton code
il ne fait pas 400 lignes
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
1 janv. 2013 à 19:59
oki, 2sec, reste là !!
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
1 janv. 2013 à 20:04
Bon, je sais qu'il y a mieux, alors ne jugez pas mon code svp. Il fonctionne, c'est le plus important pour moi ;)
A part pour la fermeture, bien entendu...
Pour vous faire une idée : j'affiche des images au hasard dans une pictureBox et j'affiche le nom de l'image dans des labels. En gros...

Voilà où je me suis arrêtée dans ma form1:

Public Class Form1
    Dim i, b, n, x, y As Integer
    Dim chemin, chemin2, chemin3 As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        n = 0
        x = 1
        y = 9
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If sans.Checked = True Then
            Box1.Visible = False
            referme1.Text = ""
            referme2.Text = ""

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                complement1.Text = i
                complement2.Text = ""
                n = n + 1
            Else
                complement2.Text = 10 - i
                n = 0
            End If

        ElseIf avec.Checked = True Then
            Box1.Visible = True

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                chemin = "_" & i
                Box1.Image = My.Resources.ResourceManager.GetObject(chemin)
                complement1.Text = i
                complement2.Text = ""
                referme1.Text = ""
                referme2.Text = ""
                n = n + 1
                If i > 5 Then n = n + 1
                b = 10 - i
            ElseIf n = 1 Then
                chemin2 = "_" & i & "c"
                Box1.Image = My.Resources.ResourceManager.GetObject(chemin2)

                complement2.Text = b
                n = n + 1

            ElseIf n = 2 Then
                chemin3 = "_" & i & "f"
                complement2.Text = b
                Box1.Image = My.Resources.ResourceManager.GetObject(chemin3)
                n = n + 1
                referme1.Text = "Quand la boîte est pleine,"
                referme2.Text = "je referme les deux couvercles."
            ElseIf n = 3 Then
                Box1.Image = My.Resources._10
                n = 0
            End If
        End If

    End Sub

    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form2.Show()
        Me.Close()

    End Sub

    Private Sub quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles quitter.Click
        End
    End Sub

    Private Sub c10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c10.Click
        Me.Show()
    End Sub

    Private Sub c100_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c100.Click
        Form2.Show()
    End Sub
End Class


et dans ma form2:

Public Class Form2
    Dim i, b, n, x, y As Integer
    Dim chemin, chemin2, chemin3 As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If sans.Checked = True Then
            Box1.Visible = False
            referme1.Text = ""
            referme2.Text = ""

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                complement1.Text = i * 10
                complement2.Text = ""
                diz1.Text = i & " d"
                diz2.Text = ""
                n = n + 1
            Else
                complement2.Text = 100 - (i * 10)
                diz2.Text = (10 - i) & " d"
                n = 0
            End If

        ElseIf avec.Checked = True Then
            Box1.Visible = True

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                chemin = "_" & (i * 10) & "d"
                Box1.Image = My.Resources.ResourceManager.GetObject(chemin)
                complement1.Text = (i * 10)
                complement2.Text = ""
                diz1.Text = i & " d"
                diz2.Text = ""
                referme1.Text = ""
                referme2.Text = ""
                n = n + 1

                b = 100 - (i * 10)

            ElseIf n = 1 Then
                chemin2 = "_" & (i * 10) & "b"
                Box1.Image = My.Resources.ResourceManager.GetObject(chemin2)

                complement2.Text = b
                diz2.Text = (10 - i) & " d"
                n = n + 1

            ElseIf n = 2 Then
                chemin3 = "valise2"
                'complement2.Text = b

                Box1.Image = My.Resources.ResourceManager.GetObject(chemin3)
                n = n + 1
                referme1.Text = "Quand la valise est pleine,"
                referme2.Text = "je la referme."
            ElseIf n = 3 Then
                Box1.Image = My.Resources.valise3
                n = 0
            End If
        End If
    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        n = 0
        x = 1
        y = 9
    End Sub

    

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form1.Show()
        Me.Close()
    End Sub

    Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem5.Click
        End
    End Sub

    Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click
        Form1.Show()
    End Sub

    Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
        Me.Show()
    End Sub
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 janv. 2013 à 21:22
Bon, je sais qu'il y a mieux, alors ne jugez pas mon code svp. Il fonctionne, c'est le plus important pour moi ;)


ah Fragile manipulez avec précaution

d'abord met ton projet à option strict on
clique sur projet -> proprieté et après l'onglet
compile et tu as option strict on ou off

et ensuite corrige ton code
ex
complement1.Text = i

pas correct
c'est
complement1.Text = i.ToString


ensuite
Private Sub c10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c10.Click
        Me.Show()
    End Sub


il sert à rien puisque ton form1 est visible
si il est hide tu ne peux pas avoir accès au
bouton c10

Private Sub c100_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c100.Click
        Form2.Show()
    End Sub


la si tu cliques c100
tu vas avoir les deux form mais form2 va cacher
form1
donc tu ne pourras pas fermer form1


Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
        Me.Show()
    End Sub


ne sert à rien puisque form2 est visible

le end coup de matraque

essaie avec

Private Sub quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles quitter.Click
        me.close
  If Application.OpenForms.OfType(of Form).Contains(form2) then
   form2.close

End Sub


Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem5.Click
       me.close
   If Application.OpenForms.OfType(of Form).Contains(form1) then
   form1.close
      
    End Sub
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
1 janv. 2013 à 23:25
Merci de ton aide, ShayW, mais ça ne fonctionne toujours pas :(

j'ai passé toutes mes variables i et b en .tostring quand je les utilise dans une string.

j'ai passé option strict à on. Qu'est-ce que ça change? Il est plus pointilleux? J'ai du changer des choses avec mes "im = My.Resources.ResourceManager.GetObject(chemin)"...
J'ai appris seulement hier soir que ça existait, et on m'a proposé 2 codes, sans que je comprenne tout. Alors j'ai remplacé par le 2ème et ça n'a plus eu l'air de bloquer la compilation.

j'ai remplacé mes "end" par ce que tu as dit.

Je n'ai pas changé les trucs inutiles
"il sert à rien puisque ton form1 est visible
si il est hide tu ne peux pas avoir accès au
bouton c10"
simplement parce que c'est inutile mais pas problématique ;) Et parce que je ne sais pas me servir d'un menu, c'est la 1ère fois que j'en faisais un, juste pour essayer de fermer proprement. Et je ne sais aps comment faire apparaître le même menu dans toutes les forms. J'ai du le copier coller dans l'autre form! Donc je sais encore moins faire apparaitre ou disparaitre des menus en fonction de la form dans laquelle je suis...Mais ça c'est une autre histoire!

Je te copie colle mon nouveau code, qui me pose tjs le même problème :(
J'espère que tu auras une autre idée pour m'aider!!!

form1 :
Public Class Form1
    Dim i, b, n, x, y As Integer
    Dim chemin, chemin2, chemin3 As String
    Dim im, im2, im3 As System.Drawing.Image

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        n = 0
        x = 1
        y = 9
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If sans.Checked = True Then
            Box1.Visible = False
            referme1.Text = ""
            referme2.Text = ""

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                complement1.Text = i.ToString
                complement2.Text = ""
                n = n + 1
            Else
                complement2.Text = (10 - i).ToString
                n = 0
            End If

        ElseIf avec.Checked = True Then
            Box1.Visible = True

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                chemin = "_" & i.ToString
                'Box1.Image = My.Resources.ResourceManager.GetObject(chemin)
                im = DirectCast(My.Resources.ResourceManager.GetObject(chemin), System.Drawing.Image)
                Box1.Image = im

                complement1.Text = i.ToString
                complement2.Text = ""
                referme1.Text = ""
                referme2.Text = ""
                n = n + 1
                If i > 5 Then n = n + 1
                b = 10 - i
            ElseIf n = 1 Then
                chemin2 = "_" & i.ToString & "c"
                'Box1.Image = My.Resources.ResourceManager.GetObject(chemin2)
                im2 = DirectCast(My.Resources.ResourceManager.GetObject(chemin2), System.Drawing.Image)
                Box1.Image = im2

                complement2.Text = b.ToString
                n = n + 1

            ElseIf n = 2 Then
                chemin3 = "_" & i.ToString & "f"
                complement2.Text = b.ToString
                'Box1.Image = My.Resources.ResourceManager.GetObject(chemin3)
                im3 = DirectCast(My.Resources.ResourceManager.GetObject(chemin3), System.Drawing.Image)
                Box1.Image = im3

                n = n + 1
                referme1.Text = "Quand la boîte est pleine,"
                referme2.Text = "je referme les deux couvercles."
            ElseIf n = 3 Then
                Box1.Image = My.Resources._10
                n = 0
            End If
        End If

    End Sub

    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form2.Show()
        Me.Close()

    End Sub

    Private Sub quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles quitter.Click
        Me.Close()
        If Application.OpenForms.OfType(Of Form).Contains(Form2) Then
            Form2.Close()
        End If
    End Sub

    Private Sub c10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c10.Click
        Me.Show()
    End Sub

    Private Sub c100_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c100.Click
        Form2.Show()
    End Sub
End Class


form2:

Public Class Form2
    Dim i, b, n, x, y As Integer
    Dim chemin, chemin2, chemin3 As String
    Dim im, im2, im3 As System.Drawing.Image

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If sans.Checked = True Then
            Box1.Visible = False
            referme1.Text = ""
            referme2.Text = ""

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                complement1.Text = (i * 10).ToString
                complement2.Text = ""
                diz1.Text = i.ToString & " d"
                diz2.Text = ""
                n = n + 1
            Else
                complement2.Text = (100 - (i * 10)).ToString
                diz2.Text = (10 - i).ToString & " d"
                n = 0
            End If

        ElseIf avec.Checked = True Then
            Box1.Visible = True

            If n = 0 Then
                i = CInt(Int((y - x + 1) * Rnd() + x))
                chemin = "_" & (i * 10).ToString & "d"
                'Box1.Image = My.Resources.ResourceManager.GetObject(chemin)
                im = DirectCast(My.Resources.ResourceManager.GetObject(chemin), System.Drawing.Image)
                Box1.Image = im

                complement1.Text = (i * 10).ToString
                complement2.Text = ""
                diz1.Text = i.ToString & " d"
                diz2.Text = ""
                referme1.Text = ""
                referme2.Text = ""
                n = n + 1

                b = 100 - (i * 10)

            ElseIf n = 1 Then
                chemin2 = "_" & (i * 10).ToString & "b"
                'Box1.Image = My.Resources.ResourceManager.GetObject(chemin2)
                im2 = DirectCast(My.Resources.ResourceManager.GetObject(chemin2), System.Drawing.Image)
                Box1.Image = im2

                complement2.Text = b.ToString
                diz2.Text = (10 - i).ToString & " d"
                n = n + 1

            ElseIf n = 2 Then
                chemin3 = "valise2"
                'complement2.Text = b

                'Box1.Image = My.Resources.ResourceManager.GetObject(chemin3)
                im3 = DirectCast(My.Resources.ResourceManager.GetObject(chemin3), System.Drawing.Image)
                Box1.Image = im3

                n = n + 1
                referme1.Text = "Quand la valise est pleine,"
                referme2.Text = "je la referme."
            ElseIf n = 3 Then
                Box1.Image = My.Resources.valise3
                n = 0
            End If
        End If
    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        n = 0
        x = 1
        y = 9
    End Sub

    

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form1.Show()
        Me.Close()
    End Sub

    Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem5.Click
        Me.Close()
        If Application.OpenForms.OfType(Of Form).Contains(Form1) Then
            Form1.Close()
        End If
    End Sub

    Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click
        Form1.Show()
    End Sub

    Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
        Me.Show()
    End Sub
End Class
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
1 janv. 2013 à 23:31
ps : je viens de tester ça :

Private Sub Form1_close()
Form2.Close()
End Sub

et vice versa

Mon problème persiste !! :(
0
Utilisateur anonyme
2 janv. 2013 à 00:15
Essaie de déclarer ton ou tes formulaires dans la classe de ton formulaire principal.
Dim F2 as Form2

Ensuite, tu peux les afficher ou les masquer de cette façon :
'instance
F2 = new Form2
'affichage
F2.Show
'ou affichage en modal
F2.showdialog
'ou son masquage
F2.Hide

Pour les fermer, tu n'auras qu'à faire :
F2.close
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 janv. 2013 à 09:59
Bon encore une chose

si tu veux tout fermer en cliquant sur le x

ajoute dans le code de ta form1

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     If Application.OpenForms.OfType(Of Form).Contains(Form2) Then
            Form2.Close()
        End If
    End Sub


'et dans le code de ta form2
Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
       
 If Application.OpenForms.OfType(Of Form).Contains(Form2) Then
            Form1.Close()
        End If
    End Sub
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
2 janv. 2013 à 11:56
Bonjour,
Avec ça non plus ça ne marche pas.
En fait, il suffit que je lance mon logiciel. Sans rien faire, pas de clic sur aucun bouton ni aucun menu, sans appeler la form2, quand je quitte direct ça plante...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 janv. 2013 à 12:43
En fait, il suffit que je lance mon logiciel. Sans rien faire, pas de clic sur aucun bouton ni aucun menu, sans appeler la form2, quand je quitte direct ça plante...

Je reste alors un peu plus convaincu de ce que j'ai dit plus haut, puisque tu as un problème du seul fait de quitter, sans avoir accompli aucune autre action !
Ce fait ne peut selon moi être expliqué que par des pointeurs modifiés et non rétablis avant fermeture. L'existence de telles modifications est en général le fait de sous-classement(s).
Le code montré ne fait cependant apparaître aucune tentative dans ce sens. Est-ce le seul code de toute ton appli ?
- si oui : c'est alors un mystère
- si non : parcours tout ton code à la recherche du mot AddressOf, pour voir ...
A ce propos : je ne connais pas VB.Net, mais me demande s'il n'offre pas la possibilité de définir des "délégués", ce qui reviendrait alors à peu près au même, à savoir la création de nouveaux pointeurs, qu'il faudrait alors peut-être annuler avant fermeture de l'appli.
Voilà ! Ne connaissant pas VB.Net, je dis peut-être des bêtises, mais je préfère les dire...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 janv. 2013 à 12:52
Bon
pas facile
procéder à un petit test
met un point d'arret F9

Public Class Form2
ici    Dim i, b, n, x, y As Integer


et lance ton prog
s'est il arreté au point d'arret
quand je quitte direct ça plante

quitte direct ?
en cliquant sur le x ?
ça plante

tu as un message d'erreur ?
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
2 janv. 2013 à 14:41
j'ai fait plein de test et il s'avère que le pb vient que form 1 ne se ferme pas.
et l'appli ne se ferme en entier que via form 1. Fermer form2 laisse form1 tourner, hors elle est cachée donc je suis dans la m...

Donc là je laisse les 2 forms ouvertes l'une sur l'autre et je teste :

private sub form2_close()
form1.close()
end sub

ne marche pas

private sub form2_close()
end
end sub

oui, j'ai osé! mais ça ne marche pas non plus

propriétés de l'appli --> fermeture au dernier form ouvert
ne marche pas non plus

tous les autres trucs que tu m'avais dits ne fonctionnent pas non plus.

résumé : l'appli ne se ferme que si je ferme form1.
je ne sais pas fermer form1 via une autre form ni via un menu.
0
cs_rorox Messages postés 22 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 2 janvier 2013 1
2 janv. 2013 à 16:07
ya un message que je n'avais pas vu...

j'ai modifié plein de choses en repartant de la base mais je ne m'explique pas le pb :(

bref...

pr répondre : oui, c'est le seul code que j'ai. donc mystère??

je n'ai pas visual basic.net mais visual basic 2008

j'ai repris tte ma form1 dans une nouvelle appli, sans form 2. tout marche.
j'ai ajouté la form 2 sans bouton pour l'appeler, tout marche.
après, j'ai fait tellement de tests que je ne sais plus quand ça se met à planter :'(
maintenant je note, mais j'en ai fait 15 et je ne comprends pas...

déjà, j'ai compris que "fermeture au dernier form" ce n'est aps fermeture au dernier form qu'on vient d'ouvrir (genre F2) mais à tous els forms ouverts précédemment!!! nuance !!
ce qui ne change rien

à un moment j'avais fait une boucle :
private sub form2_closing...
form1.close()
end sub

et vice versa... donc blocage!!

mais là, j'ai tout enlevé, je comprends rieeeeeeeeeeeennnnn !!!!
j'ai passé ma journée à ça :'( :'( :'(

je vais essayer avec le point d'arrêt mais ne suis aps convaincue
0
Rejoignez-nous