Member 13588226 Ответов: 2

Событие Catch в массиве imagebutton


Мне нужен производный от хорошо известной игры памяти. С этой целью я намеревался сгенерировать панель с массивом кнопок imagebuttons. Следовательно, я намерен изменить imageurl нажатой кнопки imagebutton. Настройка кратко описана в приведенных ниже нескольких строках кода.
Однако я не могу поймать событие щелчка на кнопках imagebuttons. Есть ли кто-нибудь, кто мог бы указать мне правильное направление ?

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

Partial Class _Default
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim intRijen, intKolommen As Int16
        ' DEFINE SIZE OF MEMORY BOARD
        intRijen = 4
        intKolommen = 3
        Dim imgbPrent(intRijen, intKolommen) As ImageButton
        For nR = 0 To intRijen
            For nK = 0 To intKolommen
                imgbPrent(nR, nK) = New ImageButton
                imgbPrent(nR, nK).ID = CStr(nR) & CStr(nK)
                imgbPrent(nR, nK).Width = 100
                imgbPrent(nR, nK).Height = 100
                imgbPrent(nR, nK).ImageUrl = "~/prentjes/" & CStr(nR) & CStr(nK) & ".jpg"
                Panel1.Controls.Add(imgbPrent(nR, nK))
            Next
            Panel1.Controls.Add(New LiteralControl("<br />"))
        Next
    End Sub
    '
    'Protected Sub imgbPrent(0, 0)_click (sender As Object, e As ImageClickEventArgs) Handles Prent.Click
    '     imgbPrent(0,0).ImageUrl = "~/prentjes/99.jpg"
    'End Sub

End Class

2 Ответов

Рейтинг:
6

Member 13588226

Ваш ответ "AddHandler" действительно помог мне : спасибо !

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


Рейтинг:
14

Richard Deeming

Вам нужно будет использовать Добавитьобработчик[^] для подключения обработчика событий.

Вы также должны переместить код, создающий элементы управления из Load событие для Init событие. Это гарантирует, что они будут созданы достаточно рано в жизненном цикле страницы для обработки событий post-back.

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

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    Dim intRijen, intKolommen As Int16
    intRijen = 4
    intKolommen = 3
    For nR = 0 To intRijen
        For nK = 0 To intKolommen
            Dim imgbPrent As New ImageButton
            imgbPrent.ID = CStr(nR) & CStr(nK)
            imgbPrent.Width = 100
            imgbPrent.Height = 100
            imgbPrent.ImageUrl = "~/prentjes/" & CStr(nR) & CStr(nK) & ".jpg"
            Panel1.Controls.Add(imgbPrent)
            AddHandler imgbPrent.Click, AddressOf imgbPrent_Click
        Next
        Panel1.Controls.Add(New LiteralControl("<br />"))
    Next
End Sub

Protected Sub imgbPrent_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
    Dim btn As ImageButton = DirectCast(sender, ImageButton)
    btn.ImageUrl = "~/prentjes99.jpg"
End Sub