Member 11856456 Ответов: 1

Как мне перебрать таблицу и сделать текст radiobutton из информации о строках и сделать их все на определенном расстоянии друг от друга?


Итак, я нахожусь в процессе создания динамического оператора radiobutton create. Все, что я пытаюсь сделать, это на основе каждой строки вызвать текст для создания радиокнопок.

Вот что у меня есть:

Dim x As Integer = 100
       Dim y As Integer = 110
       y += 30


       For Each col As DataColumn In dt.Columns
           For Each row As DataRow In dt.Rows
               Dim rbe As New RadioButton
               rbe.Text = row.Item(col.ColumnName)
               For i = 0 To dt.Columns.Count - 1
                   rbe.Location = New Point(x, y + i)
                   Me.Controls.Add(rbe)
               Next
               Next
           Next


Я хочу, чтобы каждое местоположение было на расстоянии 30 от следующего в целочисленном Y. Итак, что-то вроде того, чтобы начать со 110, а затем перейти к 140, 170, 200, 230.

Я вижу только один из 5, Как я могу динамически перебирать местоположения?

Заранее спасибо.

Что я уже пробовал:

Я пытался изменить местоположение через a для каждого оператора, и это не сработало, я также пытался повторить каждый элемент управления, и это тоже не сработало.

1 Ответов

Рейтинг:
2

Richard Deeming

Вы создаете единую RadioButton управление для каждой строки и просто обновление ее положения для каждого столбца. Если вам нужен элемент управления для каждого столбца, то вам нужно его создать.

Вы также захотите удалить внешнее For Each цикл, как вы в данный момент повторяете столбцы, затем строки, затем снова столбцы.

Вероятно, вы захотите переместить элементы управления в новую строку для каждого из них DataRow в таблице.

Dim x As Integer = 100
Dim y As Integer = 110

For Each row As DataRow In dt.Rows
    For Each col As DataColumn In dt.Columns
        Dim rbe As New RadioButton
        rbe.Text = row.Item(col)
        rbe.Location = new Point(x, y)
        Me.Controls.Add(rbe)
        
        ' Move to the next column:
        y += 30
    Next
    
    ' Move to the start of the next row:
    x += 30
    y = 110
Next

NB: Вы не оставляете много места для текста. Возможно, вам придется увеличить расстояние между столбцами или посмотреть на что-то вроде TableLayoutPanel:
Пошаговое руководство: организация элементов управления в Windows Forms с помощью TableLayoutPanel | Microsoft Docs[^]