Создание панелей на основе GridView - PullRequest
0 голосов
/ 26 марта 2020

Я делаю заявку, в которой необходимо создать список с несколькими вариантами, в этом случае список включает в себя меру элемента и его положение. Позиция относится к тому факту, что в Panel есть позиции A, B, C, D, и каждый элемент должен занимать одну из этих позиций, как отмечено в списке GridView.

Это должно быть как следует.

Panels and GridView

Я создаю код, но не связан с GridView и создаю объекты на основе количества единиц, созданных в виде сетки.

 For i = 1 To ContadorIzq

            pos = CInt(TextBox38.Text)
            poslabel = CInt(TextBox42.Text)

            Dim pb As New Panel With
            {
                .Width = 120,
                .Height = 460,
                .Top = 10,
                .Left = 10,
                .BorderStyle = BorderStyle.FixedSingle,
                .BackgroundImage = Image.FromFile("C:\Images\sections\Ejem.bmp"),
                .BackgroundImageLayout = ImageLayout.Stretch,
                .ContextMenuStrip = CntxtMnuStrpUnit,
                .Name = "Panel" & CInt(TextBox37.Text),
                .Location = New Point(pos, 20)
            }

            AddHandler pb.Click, AddressOf myClickHandler_b

            Dim labela As New Label With {
                .AutoSize = True,
                .Location = New Point((poslabel), 12),
                .Text = "Section " & CInt(TextBox37.Text),
                .ForeColor = Color.White,
                .BackColor = Color.Transparent,
                .Font = New Font(Me.Font, FontStyle.Bold),
                .Name = "Label" & CInt(TextBox37.Text)
            }

            AddHandler labela.Click, AddressOf myClickHandler

            labela.Font = New Font(labela.Font, FontStyle.Bold)

            Panel1.Controls.Add(pb)
            pb.Controls.Add(labela)

            Dim posY As Int16 = 30
            Dim posX As Int16 = 3

            For j = 1 To 4

                If j = 1 Then

                    Dim pbdoors As New Panel With {
                        .Width = 114,
                        .Height = 198,
                        .Top = 10,
                        .Left = 10,
                        .BorderStyle = BorderStyle.FixedSingle,
                        .BackgroundImage = Image.FromFile("C:\Images\Doors\EjemB.bmp"),
                        .BackgroundImageLayout = ImageLayout.Stretch,
                        .ContextMenuStrip = CntxtMnuStrpUnit,
                        .Name = "Panel" & CInt(TextBox37.Text) & j
                    }

                    AddHandler pbdoors.Click, AddressOf myClickHandler_doors

                    pbdoors.Location = New Point(posX, 30)
                    pb.Controls.Add(pbdoors)
                    posY = (posY + 100)

                ElseIf j = 2 Then

                    posY = 130

                ElseIf j = 3 Then

                    Dim pbdoors As New Panel With {
                        .Width = 114,
                        .Height = 98,
                        .Top = 10,
                        .Left = 10,
                        .BorderStyle = BorderStyle.FixedSingle,
                        .BackgroundImage = Image.FromFile("C:\Images\Doors\EjemC.bmp"),
                        .BackgroundImageLayout = ImageLayout.Stretch,
                        .ContextMenuStrip = CntxtMnuStrpUnit,
                        .Name = "Panel" & CInt(TextBox37.Text) & j
                    }

                    AddHandler pbdoors.Click, AddressOf myClickHandler_doors

                    pbdoors.Location = New Point(posX, 230)
                    pb.Controls.Add(pbdoors)
                    posY = (posY + 100)

                ElseIf j = 4 Then

                    Dim pbdoors As New Panel With {
                        .Width = 114,
                        .Height = 98,
                        .Top = 10,
                        .Left = 10,
                        .BorderStyle = BorderStyle.FixedSingle,
                        .BackgroundImage = Image.FromFile("C:\Images\Doors\EjemC2.bmp"),
                        .BackgroundImageLayout = ImageLayout.Stretch,
                        .ContextMenuStrip = CntxtMnuStrpUnit,
                        .Name = "Panel" & CInt(TextBox37.Text) & j
                    }

                    AddHandler pbdoors.Click, AddressOf myClickHandler_doors

                    pbdoors.Location = New Point(posX, 330)
                    pb.Controls.Add(pbdoors)
                    posY = (posY + 100)

                End If

            Next

            TextBox38.Text = pos + 120
            TextBox37.Text = CInt(TextBox37.Text) + 1
            TextBox40.Text = CInt(TextBox40.Text) + 120

        Next

Пожалуйста, есть идеи? Не могли бы вы мне помочь?

...