MarTiUS_Will
Messages postés36Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention28 septembre 2004
-
23 août 2004 à 20:52
MarTiUS_Will
Messages postés36Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention28 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...
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 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
-------------------------------------------------
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 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
-------------------------------------------------
MarTiUS_Will
Messages postés36Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention28 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 :)