Ist es Möglich die Nummer einer PictureBox in einer Variablen zu haben

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Ist es Möglich die Nummer einer PictureBox in einer Variablen zu haben

    Hier mal das Problem um das es geht

    VB.NET-Quellcode

    1. For i = 0 To 13 * Y_Teil Step Y_Teil
    2. For j = 0 To 9 * X_Teil Step X_Teil
    3. Zaehler += 1
    4. Select Case Zaehler
    5. Case 1
    6. PictureBox2.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    7. Case 2
    8. PictureBox3.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    9. Case 3
    10. PictureBox4.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    11. Case 4
    12. PictureBox5.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    13. Case 5
    14. PictureBox6.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    15. Case 6
    16. PictureBox7.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    17. Case 7
    18. PictureBox8.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    19. Case 8
    20. PictureBox9.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    21. Case 9
    22. PictureBox10.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    23. Case 10
    24. PictureBox11.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    25. Case 11
    26. PictureBox12.Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    27. Case Else
    28. MessageBox.Show("Unerwartete Zahl" & vbCrLf & "Verarbeitung existiert nicht!", "Problem", MessageBoxButtons.OK, MessageBoxIcon.Error) 'Warning)'Fehlermeldung
    29. Exit Sub
    30. End Select
    31. Next
    32. Next


    Es müssen noch viel mehr Case kommen.
    Schöner wäre sowas wie
    PictureBox(Zaehler+1).Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    dann könnte ich mir die ganze Select Case Sache sparen.
    @Elephant So was:

    VB.NET-Quellcode

    1. Dim pb() = {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Habe noch ein Problem

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    2. Dim X_Teil As Integer
    3. Dim Y_Teil As Integer
    4. Dim pb() = {PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6, PictureBox7, PictureBox8, PictureBox9, PictureBox10, PictureBox11, PictureBox12, PictureBox13, PictureBox14, PictureBox15, PictureBox16,
    5. PictureBox17, PictureBox18, PictureBox19, PictureBox20, PictureBox21, PictureBox22, PictureBox23, PictureBox24, PictureBox25, PictureBox26, PictureBox27, PictureBox28, PictureBox29, PictureBox30, PictureBox31,
    6. PictureBox32, PictureBox33, PictureBox34, PictureBox35, PictureBox36, PictureBox37, PictureBox38, PictureBox39, PictureBox40, PictureBox41, PictureBox42, PictureBox43, PictureBox44, PictureBox45, PictureBox46,
    7. PictureBox47, PictureBox48, PictureBox49, PictureBox50, PictureBox51, PictureBox52, PictureBox53, PictureBox54, PictureBox55, PictureBox56, PictureBox57, PictureBox58, PictureBox59, PictureBox60, PictureBox61,
    8. PictureBox62, PictureBox63, PictureBox64, PictureBox65, PictureBox66, PictureBox67, PictureBox68, PictureBox69, PictureBox70, PictureBox71, PictureBox72, PictureBox73, PictureBox74, PictureBox75, PictureBox76,
    9. PictureBox77, PictureBox78, PictureBox79, PictureBox80, PictureBox81, PictureBox82, PictureBox83, PictureBox84, PictureBox85, PictureBox86, PictureBox87, PictureBox88, PictureBox89, PictureBox90, PictureBox91,
    10. PictureBox92, PictureBox93, PictureBox94, PictureBox95, PictureBox96, PictureBox97, PictureBox98, PictureBox99, PictureBox100, PictureBox101, PictureBox102, PictureBox103, PictureBox104, PictureBox105, PictureBox106,
    11. PictureBox107, PictureBox108, PictureBox109, PictureBox110, PictureBox111, PictureBox112, PictureBox113, PictureBox114, PictureBox115, PictureBox116, PictureBox117, PictureBox118, PictureBox119, PictureBox120, PictureBox121,
    12. PictureBox122, PictureBox123, PictureBox124, PictureBox125, PictureBox126, PictureBox127, PictureBox128, PictureBox129, PictureBox130, PictureBox131, PictureBox132, PictureBox133, PictureBox134, PictureBox135, PictureBox136,
    13. PictureBox137, PictureBox138, PictureBox139, PictureBox140, PictureBox141}
    14. X_Teil = X_Size / 10 - 1
    15. Y_Teil = Y_Size / 14 - 1
    16. Dim Zaehler As Integer
    17. For i = 0 To 13 * Y_Teil Step Y_Teil
    18. For j = 0 To 9 * X_Teil Step X_Teil
    19. pb(Zaehler).Image = Ausschnit(PictureBox1.Image, 1 * j, 1 * i, X_Teil, Y_Teil)
    20. Zaehler += 1
    21. Next
    22. Next
    23. End Sub

    Funktioniert wunderbar.

    Nun brauche ich die PictureBoxen auch noch in anderen Sub, deshalb

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim X_Size As Integer
    3. Dim Y_Size As Integer
    4. Dim Tauschen As Boolean
    5. Dim Wechseln As Integer
    6. Dim pb() = {PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6, PictureBox7, PictureBox8, PictureBox9, PictureBox10, PictureBox11, PictureBox12, PictureBox13, PictureBox14, PictureBox15, PictureBox16,
    7. PictureBox17, PictureBox18, PictureBox19, PictureBox20, PictureBox21, PictureBox22, PictureBox23, PictureBox24, PictureBox25, PictureBox26, PictureBox27, PictureBox28, PictureBox29, PictureBox30, PictureBox31,
    8. PictureBox32, PictureBox33, PictureBox34, PictureBox35, PictureBox36, PictureBox37, PictureBox38, PictureBox39, PictureBox40, PictureBox41, PictureBox42, PictureBox43, PictureBox44, PictureBox45, PictureBox46,
    9. PictureBox47, PictureBox48, PictureBox49, PictureBox50, PictureBox51, PictureBox52, PictureBox53, PictureBox54, PictureBox55, PictureBox56, PictureBox57, PictureBox58, PictureBox59, PictureBox60, PictureBox61,
    10. PictureBox62, PictureBox63, PictureBox64, PictureBox65, PictureBox66, PictureBox67, PictureBox68, PictureBox69, PictureBox70, PictureBox71, PictureBox72, PictureBox73, PictureBox74, PictureBox75, PictureBox76,
    11. PictureBox77, PictureBox78, PictureBox79, PictureBox80, PictureBox81, PictureBox82, PictureBox83, PictureBox84, PictureBox85, PictureBox86, PictureBox87, PictureBox88, PictureBox89, PictureBox90, PictureBox91,
    12. PictureBox92, PictureBox93, PictureBox94, PictureBox95, PictureBox96, PictureBox97, PictureBox98, PictureBox99, PictureBox100, PictureBox101, PictureBox102, PictureBox103, PictureBox104, PictureBox105, PictureBox106,
    13. PictureBox107, PictureBox108, PictureBox109, PictureBox110, PictureBox111, PictureBox112, PictureBox113, PictureBox114, PictureBox115, PictureBox116, PictureBox117, PictureBox118, PictureBox119, PictureBox120, PictureBox121,
    14. PictureBox122, PictureBox123, PictureBox124, PictureBox125, PictureBox126, PictureBox127, PictureBox128, PictureBox129, PictureBox130, PictureBox131, PictureBox132, PictureBox133, PictureBox134, PictureBox135, PictureBox136,
    15. PictureBox137, PictureBox138, PictureBox139, PictureBox140, PictureBox141}


    Dim bp in der Sub gelöscht.
    Nun kommt Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt.

    Dim X_Size nach Public Class Form1 wird in der Sub ja auch erkannt, was habe ich da falsch gemacht?
    @Elephant Du kannst das Array auch in der Klasse anlegen, da allerdings erst, nachdem der Konstruktor durchlaufen wurde, also z.B. im Load-Event.
    Also: Als Array-Variable deklarieren, im Form_Load befüllen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Habe zuwenig Ahnung um dir folgen zu können.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. Dim pb() = {PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6, PictureBox7, PictureBox8, PictureBox9, PictureBox10, PictureBox11, PictureBox12, PictureBox13, PictureBox14, PictureBox15, PictureBox16,
    3. PictureBox17, PictureBox18, PictureBox19, PictureBox20, PictureBox21, PictureBox22, PictureBox23, PictureBox24, PictureBox25, PictureBox26, PictureBox27, PictureBox28, PictureBox29, PictureBox30, PictureBox31,
    4. PictureBox32, PictureBox33, PictureBox34, PictureBox35, PictureBox36, PictureBox37, PictureBox38, PictureBox39, PictureBox40, PictureBox41, PictureBox42, PictureBox43, PictureBox44, PictureBox45, PictureBox46,
    5. PictureBox47, PictureBox48, PictureBox49, PictureBox50, PictureBox51, PictureBox52, PictureBox53, PictureBox54, PictureBox55, PictureBox56, PictureBox57, PictureBox58, PictureBox59, PictureBox60, PictureBox61,
    6. PictureBox62, PictureBox63, PictureBox64, PictureBox65, PictureBox66, PictureBox67, PictureBox68, PictureBox69, PictureBox70, PictureBox71, PictureBox72, PictureBox73, PictureBox74, PictureBox75, PictureBox76,
    7. PictureBox77, PictureBox78, PictureBox79, PictureBox80, PictureBox81, PictureBox82, PictureBox83, PictureBox84, PictureBox85, PictureBox86, PictureBox87, PictureBox88, PictureBox89, PictureBox90, PictureBox91,
    8. PictureBox92, PictureBox93, PictureBox94, PictureBox95, PictureBox96, PictureBox97, PictureBox98, PictureBox99, PictureBox100, PictureBox101, PictureBox102, PictureBox103, PictureBox104, PictureBox105, PictureBox106,
    9. PictureBox107, PictureBox108, PictureBox109, PictureBox110, PictureBox111, PictureBox112, PictureBox113, PictureBox114, PictureBox115, PictureBox116, PictureBox117, PictureBox118, PictureBox119, PictureBox120, PictureBox121,
    10. PictureBox122, PictureBox123, PictureBox124, PictureBox125, PictureBox126, PictureBox127, PictureBox128, PictureBox129, PictureBox130, PictureBox131, PictureBox132, PictureBox133, PictureBox134, PictureBox135, PictureBox136,
    11. PictureBox137, PictureBox138, PictureBox139, PictureBox140, PictureBox141}
    12. End Sub


    Ist jedenfalls nicht richtig
    Dim pb As Picture() außerhalb/oberhalb von Form1_Load.
    Innerhalb von Form1_Load dann pb = {PictureBox1, …}
    Ich greife mrMos Frage auf: What the Förg macht man mit so vielen PicBoxen?
    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.
    @Elephant So etwa:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private pb() As PictureBox
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. pb = New PictureBox() {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    5. End Sub
    6. End Class
    Und:
    Beschreib mal Dein Problem, das Du mit so vielen PictureBoxen lösen willst,
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dann würd ich dazu raten, die PicBoxen während der Laufzeit zu erstellen. Denn wenn Du nicht mehr 140, sondern 1000 Teile haben willst …
    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.