VB.NET Erreur Déinition d'un Objet

MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004 - 23 août 2004 à 20:52
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004 - 24 août 2004 à 02:15
j'obtien l'erreur
An unhandled exception of type 'System.NullReferenceException' occurred in MyProject.exe

Additional information: Object reference not set to an instance of an object.

Voici la définition des object et variables:
Private WithEvents WHead As New FrmHead
Private WithEvents WMenu As New FrmMenu
Private ProgXY, HeadXY, MenuXY, PageXY As System.Drawing.Point
Private ProgWH, HeadWH, MenuWH, PageWH As System.Drawing.Size

Et ma fonction qui crée l'erreur, l'appli démare avec le Sub Main
Sub Main()
SetUserNProgRes(800, 600) 'Cette fonction défini les vars
ShowHeadNMenu()
End Sub

Private Function ShowHeadNMenu()
With HeadXY
.X = ProgXY.X
.Y = ProgXY.Y
End With
With HeadWH
.Width = ProgWH.Width
.Height = WHead.ActiveForm.Size.Height 'J'ai l'erreur juste ici
End With
WHead.ActiveForm.Location = HeadXY 'Surement ici... plus tard
WHead.ActiveForm.Size = HeadWH
With MenuXY
.X = ProgXY.X
.Y = ProgXY.Y + HeadWH.Height
End With
With MenuWH
.Width = WMenu.ActiveForm.Size.Width
.Height = ProgWH.Height - HeadWH.Height
End With
WMenu.ActiveForm.Location = MenuXY
WMenu.ActiveForm.Size = MenuWH
With PageXY
.X = ProgXY.X + MenuWH.Width
.Y = MenuXY.Y
End With
With PageWH
.Width = ProgWH.Width - MenuWH.Width
.Height = ProgWH.Height - HeadWH.Height
End With

WHead.ActiveForm.Show()
WMenu.ActiveForm.Show()
end function

Alors le probleme est plutot que je débute en .NET je crois...

6 réponses

cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
23 août 2004 à 22:34
le problème viens du fait que 90% du monde icic programme mal

Private ProgXY, HeadXY, MenuXY, PageXY As System.Drawing.Point

qu'on soit en VB6.0 et surtout en Vb.Net, ça crée 3 type object (variant en 6.0) et un type Point

tu dois, pour avoir la bonne structure

Private ProgXY As System.Drawing.Point, HeadXY As System.Drawing.Point, MenuXY As System.Drawing.Point, PageXY As System.Drawing.Point

ou encore

import System.Drawing
Private ProgXY As Point, HeadXY As Point, MenuXY As Point, PageXY As Point

en .Net faut aussi crée tes variable avec un New, faut pas l'ouvlier sinon tu as nothing comme valeur. Va en pas à pas et regarde la valeur qu'il possède avant de faire le code, tu verras, tu vas avoir nothing très certainement
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
23 août 2004 à 23:03
j'ai fait ce que tu as dit mais le probleme est au niveau de:

Private WithEvents WHead As New FrmHead

Et cette ligne
.Height = WHead.ActiveForm.Size.Height

With HeadWH
.Width = ProgWH.Width
.Height = WHead.ActiveForm.Size.Height
End With
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
23 août 2004 à 23:20
FrmHead c,.est quoi, une form que tu as créé, si oui, le problème viens de là, ta form est mal créé

-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
23 août 2004 à 23:23
oui c'est sa... mal créer ??
0

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

Posez votre question
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
23 août 2004 à 23:54
Si je veut lancer ma FOrm il m'envoie l'erreur

An unhandled exception of type 'System.StackOverflowException' occurred in MyProject.exe

et c'est cette partie...
a la ligne MyBase.New()
je ne comprend pas vraiment cette partie heh :sad)

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub
0
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
24 août 2004 à 02:15
Bon, maintenant sa marche hehe :big)

dans l'erreur Object reference not set to an instance of an object.
l'objet qui n'est pas défini étais .ActiveForm de FrmHead qui.
je crois sert a renvoiller ou définir une Property.
Ma ligne de code étais:
.Height = WHead.ActiveForm.Size.Height

Mais maintenant si mon code marche c'est car j'ai été fouiller sur mon ancien projet que j'avais passer de VB6 a .net. et le code qui est au début des form n'étais pas le meme. Le voici :

Dans:#Region "Windows Form Designer generated code "

Public Sub New()
MyBase.New()
If m_vb6FormDefInstance Is Nothing Then
If m_InitializingDefInstance Then
m_vb6FormDefInstance = Me
Else
Try
'For the start-up form, the first instance created is the default instance.
If System.Reflection.Assembly.GetExecutingAssembly.EntryPoint.DeclaringType Is Me.GetType Then
m_vb6FormDefInstance = Me
End If
Catch
End Try
End If
End If
'This call is required by the Windows Form Designer.
InitializeComponent()
End Sub

Et Dans:#Region "Upgrade Support "

Private Shared m_vb6FormDefInstance As frmAdmin
Private Shared m_InitializingDefInstance As Boolean
Public Shared Property DefInstance() As frmAdmin
Get
If m_vb6FormDefInstance Is Nothing OrElse m_vb6FormDefInstance.IsDisposed Then
m_InitializingDefInstance = True
m_vb6FormDefInstance = New frmAdmin
m_InitializingDefInstance = False
End If
DefInstance = m_vb6FormDefInstance
End Get
Set(ByVal Value As frmAdmin)
m_vb6FormDefInstance = Value
End Set
End Property

Et maintenant ma ligne de code est:
.Height = WHead.DefInstance.Size.Height

Je ne comprend pas vraiment le principe de ce code alors si tu le sais dragoon n'hésite pas a me le dire :)
0
Rejoignez-nous