Member 12741769 Ответов: 1

Обнаружение элементов массива visual basic


Я пытаюсь сделать массив кнопок в VB. Все шло хорошо, пока я не захотел от каждой отдельной кнопки в этом массиве делать разные действия, например, когда в массиве btns() Я нажимаю на btns(0) и хочу, чтобы он удалил btnz (0) в массиве btnz (). Проблема возникает, когда есть больше btns, скажем, есть 3 кнопки, но все они назначены одному и тому же обработчику, поэтому я сначала должен определить, какая кнопка из btns() нажата. Кнопки Btw из btns () и btnz () создаются нажатием кнопки Button1, поэтому мне пришлось назначить им один и тот же обработчик.

У кого-нибудь есть решение, как определить, какая кнопка была нажата, или какая-то другая идея?

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

Я решил, что должен поставить его в цикл, но не знаю, как его закончить.

Частная суб Clicked_On_btns(как byval отправителя как объект, как byval E Как системы.EventArgs)
Для i = 0 до num ' num - это количество БТН, созданных до сих пор
- вот тут я и застрял.
Следующий
Конец Подводной Лодки

NotPolitcallyCorrect

отправитель-это кнопка, которая была нажата.

Member 12741769

да

NotPolitcallyCorrect

- что "да"?

Member 12741769

Ой, ладно, извини, сначала я не получил твоего ответа.
Спасибо, это все решило!

1 Ответов

Рейтинг:
0

Maciej Los

Как PhantomUpvoter[^] упомянутый в комментарии к вопросу, вы можете использовать sender объект для определения того, какая кнопка была нажата.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim b As Button = CType(sender, Button)
        Label1.Text = b.ID
End Sub


Другой способ-создавать List(of Button) и использование Оператор AddHandler[^] добавить Click событие для динамически создаваемых кнопок.


1. добавьте метод, который будет использоваться для обработки click событие.
Private Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
   ' common method for multiple buttons
End Sub

2. Создание кнопок
Dim btns As List(Of Button) = New List(Of Button)
For i As Integer = 0 to 9
    Dim btn As Button = New Button
    With btn
        'set with, height, location, text, etc.
        .Parent = Me
    End With
    'add button to the list of button
    btns.Add(btn)
    AddHandeler btn.Click AdressOf Button_Click
Next


Для получения более подробной информации, пожалуйста, смотрите:
Создание обработчиков событий в Windows Forms[^]
Как создать обработчики событий с помощью конструктора[^]Как создать обработчики событий во время выполнения для Windows Forms[^]