Bonjour
quelle est la différence entre me.close et me.dispose ?
Merci
Bonjour
quelle est la différence entre me.close et me.dispose ?
Merci
la méthode close de la classe form ferme simplement la fenêtre
la méthode dispose qui existe sur beaucoup de classes y compris la classe form libère les ressources non managées (= gérées par autre chose que .net, par windows par exemple (controles, images, connexions ...)
la méthode dispose de la classe form appelle à priori .close au passage
ce qui est managé dans une classe disposée n'est plus accessible par le code (erreur objectdisposedexception)
tout ce qui est disposable et non référencé (= pas de variable qui pointe dessus) sera à terme disposé automatiquement, mais il est préférable de le disposer soit même quand on en a plus besoin (using / end using est utile pour ca)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 dim f as new form f.close dim s = f.textbox1.text ' ok f.dispose s = f.textbox1.Text ' erreur à mon avis
google est l'ami de tout le monde:
http://msdn.microsoft.com/fr-FR/libr...vs.110%29.aspx
http://msdn.microsoft.com/fr-FR/libr...vs.110%29.aspx
j'ai effectué un petit test
aucune exception est relevée bizarre bien que j'ai écrit classx.close
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Public Class Form2 Private classx As New Form Private WithEvents buutonshow As New Button Private WithEvents buttonclose As New Button Private Sub Form2_Load(sender As Object, e As System.EventArgs) Handles Me.Load classx.BackColor = Color.DarkCyan classx.Controls.Add(buttonclose) buttonclose.Text = "Close" Me.Controls.Add(buutonshow) buutonshow.Text = "Show" buutonshow.Visible = False classx.ShowDialog() End Sub Private Sub buttonclose_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles buttonclose.MouseClick buutonshow.Visible = True buttonclose.Visible = False classx.Close() End Sub Private Sub buutonshow_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles buutonshow.MouseClick buttonclose.Visible = True buutonshow.Visible = False classx.ShowDialog() End Sub End Class
par contre si je remplace classx.showdialog par classx.show une exception est relevée à la ligne classx.Show()
Partager