Public Class Form1 Dim y As Integer = PictureBox1.Location.Y 'määritellään x ja y Dim x As Integer = PictureBox1.Location.X Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown Select Case e.KeyCode 'tutkitaan mikä näppäin Case Keys.Left 'vasen? x -= 1 'lisätään x:n arvoa yhdellä PictureBox1.Location = New Point(x, y) 'liikutetaa End Select End Sub End Class
tommone lukee immediate windowssa ku ohjelmaa suorittaa:
A first chance exception of type 'System.NullReferenceException' occurred in liikkuu.exe
Mitä toi tarkottaa?
jonkun muuttujan arvo on null eli sille ei ole asetettu mitään arvoa ennen, kuin sitä yritetään käyttää. Veikkaisin, että Dimillä varatut x, y eivät näy Form1_KeyDown metodiin. Tämä on veikkaus kun en muista mitä varaus sanoja vb käyttää, mutta dim teki jotenkin hetkellisiä vain yhtä metodia varten joten olettaisin luokan muuttujien olevan private, protected tai public ainakin näin c#:ssa.
juu näinhän se ohjeiden mukaan onkin
http://www.harding.edu/USER/fmccown/WWW/
Eli vb.net == C# käskyt
Dim x as Integer == Integer x;
Private x as Integer == private x as Integer;
Eli muuta Dim -> Private ,niin pitäisi toimia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.