Picture box Name Nothing

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Ganz kurz: Weil die PictureBox nicht instanziert wurde.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Dim itname As PictureBox
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim pbcount As Integer
    5. Dim pbtop As Integer
    6. Dim pbitemcound As Integer
    7. For i As Integer = 0 To 400 Step 20
    8. If i = 400 Then
    9. pbcount += 1
    10. pbtop += 20
    11. i = -20
    12. Else
    13. Dim pb As New PictureBox
    14. If pbcount = 20 Then
    15. Exit For
    16. Else
    17. pbitemcound += 1
    18. pb.Height = 19
    19. pb.Width = 19
    20. pb.Left = i
    21. pb.Top = pbtop
    22. pb.BackColor = Color.Gray
    23. pb.Name = pbitemcound.ToString()
    24. AddHandler pb.Click, AddressOf Pb_Click_Handler
    25. AddHandler pb.MouseMove, AddressOf Pb_MouseMove_Handler
    26. Me.PL_room.Controls.Add(pb)
    27. ListBox1.Items.Add(pb.Name)
    28. End If
    29. End If
    30. Next
    31. End Sub
    32. Private Sub Pb_Click_Handler(sender As Object, e As EventArgs)
    33. Dim t As Integer = sender.name
    34. sender.BackColor = Color.White
    35. itname.Name = t
    36. MessageBox.Show("Du hast auf " & sender.Name & " geklickt")
    37. MessageBox.Show("item name" & itname.Name)
    38. End Sub
    39. Private Sub Pb_MouseMove_Handler(sender As Object, e As EventArgs)
    40. 'sender.BackColor = Color.White
    41. End Sub
    42. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    43. Dim itobj As PictureBox
    44. With itobj
    45. .Name = itname.Name
    46. End With
    47. End Sub
    48. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    49. End Sub
    50. Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    51. 'Dim itobj As PictureBox
    52. 'itobj.Name = itname.ToString
    53. 'If e.KeyData = Keys.Up Then
    54. ' itobj.BackColor = Color.Gray
    55. ' itobj.Name -= 20
    56. ' itobj.BackColor = Color.White
    57. 'End If
    58. End Sub
    59. End Class

    mrMo schrieb:

    Ganz kurz: Weil die PictureBox nicht instanziert wurde.
    ?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    erstmal vielen dank für eure schnellen antworten
    bin noch neuling und kenne mich nur sehr sporadisch aus

    VB.NET-Quellcode

    1. itname.Name = t

    und da tritt der fehler auf
    hier nochmal ein paar code zeilen die ich verwende

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim itname As PictureBox
    3. Private Sub Pb_Click_Handler(sender As Object, e As EventArgs)
    4. Dim t As Integer = sender.name
    5. sender.BackColor = Color.White
    6. itname.Name = t
    7. MessageBox.Show("Du hast auf " & sender.Name & " geklickt")
    8. MessageBox.Show("item name" & itname.Name)
    9. End Sub
    10. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    11. Dim itobj As PictureBox
    12. With itobj
    13. .Name = itname.Name
    14. End With
    15. End Sub

    mrMo schrieb:

    Ganz kurz: Weil die PictureBox nicht instanziert wurde.
    itname und itobj wurdene nicht instanziert. Die sind daher nothing. Bevor man auf deren Eigenschaften Zugreifen kann, muss man diese instanzieren. Tut man das nicht erhält man eine Exception beim Zugriff. Beschäftige dich mit dem Schlüsselwort „New“ um dein Problem zu lösen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Oder anders ausgedrückt: mit Dim itobj As PictureBox sagst Du: Das Teil soll mal ne PicBox werden. Du sagst aber nirgends: Das ist jetzt aber mal wirklich eine tatsächliche PicBox.
    Aber: Was hat das alles mit WPF zu tun?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Vielen Dank!
    Das hat mir sehr weiter geholfen
    Jetzt würde ich gerne die Background Color der Pb mit dem Namen itname ändern per Button Click
    habe das hier gefunden. Jedoch brauche ich ein wenig hilfe

    VB.NET-Quellcode

    1. Me.Controls.GetType.GetProperty(itname.Name).SetValue(BackColor, Color.Red)
    Sorry aber dein ganzer Code mit den PictureBoxen ist furchtbar. Überall werden neue Pictureboxen erzeugt und dann irgendwelche Namen zugewiesen... ohne Objektorientierung verstanden zu haben wird das schwer. Vermutlich hast du nichtmal das erste Problem verstanden weil @Takafusa (böse, böse) es dir vorgesagt hat...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Danke für deine ehrlich Meinung
    Ich(noob) = true++ würde gerne ein Programm schreiben in dem ich mit meinen Pfeiltasten eine Box in einem Raster bewegen kann
    Ich dachte mir das das mit Pboxen gut gehen würde
    und um sie nicht alle mit einem Namen versehen zu müssen wollte ich sie von Programm selber erzeugen lassen
    Ideen, Vorschläge sehr Willkommen
    Das hört sich schon eigentlich sehr nach dem an was ich versuch zu machen

    Ich würde gerne das diese box die ich mit den tasten bewege sich irgendwann selbst bewegt und Entscheidungen trifft ob sie hoch runter links rechts geht. also mauern(boxen) ausweicht

    ähnlich wie ein Partfinder Algorithmus nur viel simpler
    Dachte ich mir das es eine Art kleines Spiel werden soll, zeichnen mit .Net ist nicht schwer, liefert aber nicht die beste Performence, aber sollte besser sein als mit PictureBoxen. Wobei man die Performence durch buffer noch verbessern kann, fang aber erstmal so an um zu verstehen wie das zeichnen überhaupt funktioniert.
    Hier findest du eine gute Anleitung wie das funktioniert.
    [Tutorial] GDI+
    Edit:
    Ach schade die Bilder sind in dem Thread nicht mehr vorhanden. Aber probiers einfach mal ohne, kommt ja nicht auf die "Vorschau" drauf an.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Takafusa“ ()

    marbari schrieb:

    wollte ich sie von Programm selber erzeugen lassen
    Nimm für den Anfang die Controls aus der Toolbox und platziere die auf deiner Form anstatt dynamisch Controls zu erzeugen oder etwas selbst zu zeichnen. Dann hast mit dem ganzen instanzieren und deklarieren weniger stress. Fang erstmal klein an.


    Takafusa schrieb:

    z.B. selbst zeichnen im paint-Event.
    @Takafusa das Selbst zeichnen ist für den Anfang evtl. ein wenig zu kompliziert, meinst nicht? Du siehst doch das er grad erst anfängt mit programmieren.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    das Selbst zeichnen ist für den Anfang evtl. ein wenig zu kompliziert, meinst nicht?


    Möglicherweise bin mir nicht 100% sicher, aber ich finde das zeichnen nicht schwer ist. Wenn ich hier jemanden etwas empfehle, bin ich auch bereit denjenigen dabei hier im Forum zu unterstützen, wenn er dabei weitere Hilfe braucht. Ich habe selbst sehr früh die ersten Versuche erfolgreich mit GDI gemacht. Imo sind Controls nicht für so etwas da, daher finde ich es schon OK, den richtigen Weg zu zeigen. Welchen Weg marbari nun wählt, ist natürlich seine/ihre Entscheidung.
    Hallo

    Da es sich um WinForms handelt werde ich den Thread verschieben.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dank euch für dich Vorschläge
    habe es gestern ein wenig damit rum gespielt
    erstaunlich das ich "etwas" hinbekommen habe :)

    VB.NET-Quellcode

    1. For x As Integer = 0 To 200 Step 10
    2. For y As Integer = 0 To 200 Step 10
    3. Dim box As New Rectangle(x, y, 10, 10)
    4. With e.Graphics
    5. .DrawRectangle(Pens.Black, box)
    6. End With
    7. Next
    8. Next

    aber wie kann ich die boxen benennen oder sie ansteuern um sie zu "instanziieren"

    @ErfinderDesRades schaue ich mir jetzt mal an

    danke für die Thread verschiebung