Member 7655557 Ответов: 7

Как создать массив кнопок управления в vb.net?!


Привет всем!

Я новичок, который родом из Вьетнама (так что я не очень хорошо говорю по-английски)!

У меня есть проблема в VB.NET-да.
Насколько нам известно, VB поддерживает массив управления, но VB.NET не поддерживается.

Я разработал много кнопок (100 кнопок) на форме.
Затем я установил для них имена: Button1, Button2,...Button100.

Я хотел бы создать массив, содержащий эти кнопки (Button1,..Button100, которые я разработал на форме)-(не создавать массив, содержащий новые кнопки).

Итак, как я могу это сделать? Пожалуйста, покажи мне дорогу!

помогите мне, пожалуйста! :смущенный:

Dalek Dave

Отредактировано для удобства чтения (ваш английский превосходен, гораздо лучше, чем мой вьетнамский!)

[no name]

ты ведь говоришь по-вьетнамски, правда? Вот это здорово! ^_^ Я хотел бы познакомиться с вами, далек! мой идентификатор yahoo id: gregorimendel! Пожалуйста, добавьте меня в свой список друзей, если Вы читаете этот msg! ^_^

7 Ответов

Рейтинг:
2

santosh dhanawade

Пытается следовать ссылкам Followinn

Динамический массив creatio nof

Этот lasy programming dear пытается найти google.


Рейтинг:
2

Ramalinga Koushik

Ссылка 1[^] и Link2[^- это может тебе помочь.


[no name]

большое спасибо! Это так полезно!

[no name]

Это доставляет мне удовольствие.

Рейтинг:
1

Prerak Patel

CMember 7655557 написал:
Текст каждой кнопки представляет собой число от 0 до 99. Я бы хотел воспользоваться "за"...Следующий цикл, чтобы добавить число, которое от 0 до 99 на текст каждой кнопки массива кнопок.


После вашего разъяснения я бы предложил использовать следующий код. Для этого вам не нужен массив.

'Dim buttons() As Button


For i = 1 To 100
  Dim btns() As Button = Controls.Find("Button" & i, True)
  Dim btn As Button
  If btns IsNot Nothing Then
    btn = btns(0)
    'If buttons Is Nothing Then
    '  ReDim buttons(0)
    'Else
    '  ReDim Preserve buttons(buttons.Length)
    'End If
    'buttons(UBound(buttons)) = btn
    btn.Text = i - 1 'here you can change whatever you want
  End If
Next


[no name]

Хорошая идея,
Но создание одной кнопки 100 раз не дает обработчика событий

как бы вы справились с событиями 100 кнопок

Prerak Patel

используйте addhandler для добавления обработчиков событий

Рейтинг:
1

PdotWang

Шаг 1 создайте форму с именем form1.
Шаг 2 добавить элемент управления tablelayoutpanel называется TableLayoutPanel1.
Шаг 3, Сделайте его 10 х 10 с 10% каждый.
Шаг 4, Установите его якорь на T, B, L и R. (Он может быть любого размера во время проектирования)
Шаг 5, скопируйте код в Form1.vb.
Шаг 6, запустите его, и вы получите его.
Шаг 7, Если это работает для вас, пожалуйста, отметьте это как 5.00. Я хочу получить 10 * 5.00 за 3 дня.

Public Class Form1
    'Use 0 based array
    Private NRow As Integer = 9
    Private NCol As Integer = 9
    Private BtnArray((NRow + 1) * (NCol + 1) - 1) As Button
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TableLayoutPanel1.Size = Me.ClientSize
        For i As Integer = 0 To BtnArray.Length - 1
            BtnArray(i) = New Button()
            BtnArray(i).Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right
            BtnArray(i).Text = CStr(i)
            TableLayoutPanel1.Controls.Add(BtnArray(i), i Mod (NCol + 1), i \ (NCol + 1))
            AddHandler BtnArray(i).Click, AddressOf ClickHandler
        Next
    End Sub
    Public Sub ClickHandler(ByVal sender As Object, ByVal e As _
   System.EventArgs)
        MsgBox("I am button #" & CType(sender, Button).Text)
    End Sub
End Class


Рейтинг:
0

Prerak Patel

Dim buttons() As Button


buttons = Nothing
For Each b As Button In Me.Controls
  If buttons Is Nothing Then
    ReDim buttons(0)
  Else
    ReDim Preserve buttons(buttons.Length)
  End If
  buttons(UBound(buttons)) = b
Next


buttons будет Ваш массив.
Кстати, зачем вам этот массив?


[no name]

Большое вам спасибо! Я радуюсь, когда ты пишешь мне! У меня есть заявление в VB.NET, речь идет о цифрах, текст каждой кнопки-это число, которое от 0 до 99. Я бы хотел воспользоваться "за"...Следующий цикл, чтобы добавить число, которое от 0 до 99 на текст каждой кнопки массива кнопок. Но, как вы знаете, я не знаю, как создать массив, содержащий мои кнопки, не создавая новых кнопок. Ты действительно понимаешь меня?

Dalek Dave

В Точку!

Рейтинг:
0

OriginalGriff

Попробуй:

Dim buttons As Button() = New Button() {Button1, Button2, Button3}


Кстати: с жизнью намного легче работать, когда вы не называете вещи "Button1" и "Button2", а "butChangeName", "butChangeTown" и т. д.: Что на самом деле делает "Button76"? Не заглядывая в свой код?


[no name]

Большое спасибо!

OriginalGriff

Никаких проблем!

Dalek Dave

Мудрый совет насчет имен!

Рейтинг:
0

santosh dhanawade

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

на ваши вопросы.
объявите следующее утверждение в new или в formLoad menthod

Dim temp As Label()


которые назначают память для массива элементов управления.

Dim h as integer
Dim i as integer
for i=0 to 10                                     'for 10 labels. this value can varies accordingly
  temp(i) = New Label
  temp(i).Top = 10+h
  temp(i).Left = 10
  temp(i).Width =60
  temp(i).Height =20
  temp(i).TextAlign = HorizontalAlignment.Right 
  temp(i).Text = "this is label"


  Me.Controls.Add(temp(i))
   h= h+ 65


[no name]

Спасибо за помощь мне! но простите, я не совсем понимаю, что вы имеете в виду! можете ли вы показать мне их в деталях? пожалуйста!

[no name]

Привет дорогая,
вы хотите получить подробную информацию о приведенном выше коде, и вы хотите создать кнопку вместо метки plese идет со следующим кодом.


Частная суб методе form1_load(как byval отправителя как системы.Объект, бывал е как система.EventArgs) Обрабатывает MyBase.Load
Тусклая температура как кнопка()
Dim h как целое число
Dim i как целое число
для i=от 0 до 100 'для 10 меток. это значение может изменяться соответствующим образом
temp(i) = новая кнопка
temp(i).Top = 10+h
темп(i).Слева = 10
темп(i).Ширина =60
темп(i).Высота =20
temp(i).TextAlign = горизонтальное выравнивание.Правильно
темп(i).Text = "это кнопка"+конвертировать.ToString(i)


Я-Контроль.Добавить ("темп" (я))
h= h+ 65


Конец Подводной Лодки


это будет работать нормально

Dalek Dave

Хороший Выбор.

[no name]

большое спасибо! купите парня, я сказал, что хотел бы создать массив, содержащий кнопки, которые я разработал на форме. Я бы не хотел создавать его, чтобы содержать новые bttons. Ты действительно понимаешь меня?