Страница: 1 |
Страница: 1 |
Вопрос: Клик по програмно созд-му PictureBox (в массиве)
Добавлено: 30.12.05 08:40
Автор вопроса: Morpheus | Web-сайт:
Всем здравствуйте!
я вот совсем недавно ВБ.НЕТ начал осваивать...
вот пишу прогу. короче в ней создаётся массив элементов PictureBox.
Dim Cell() As PictureBox
ReDim Cell(...)
......
Cell(K) = New PictureBox
Cell(K).Location = New Point(икс, уай)
Cell(K).Width = ...
Cell(K).Height =...
Me.Controls.Add(Cell(K))
Cell(K).Visible = True
imgTemp = New Bitmap(...)
Cell(K).Image = imgTemp
....
по самой задумке по ним надо кликать.... мне бы обработать этот клик и узнать номер элемента по которому кликнули. вот в ВБ6 всё просто было, там Index итд. а как здесь?
заранее всем благодарен!
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 30.12.05 13:33
См. инфу о AddHandler.
Номер ответа: 2
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #2
Добавлено: 30.12.05 16:33
Чё то не могу просечь в этой штуке...
Нашёл код в MSDN:
Sub TestEvents()
 im Obj As New Class1()
' Associate an event handler with an event.
AddHandler Obj.Ev_Event, AddressOf EventHandler
Obj.CauseSomeEvent() ' Ask the object to raise an event.
End Sub
Sub EventHandler()
' This procedure handles events raised by the object Obj.
MsgBox("EventHandler caught event." ' Handle the event.
End Sub
Public Class Class1
Public Event Ev_Event() ' Declare an event.
Sub CauseSomeEvent()
RaiseEvent Ev_Event() ' Raise an event.
End Sub
End Class
Блин, перечитал, переписал, так и не смог понять как это поможет отловить клик и сказать мне индекс... ещё и ошибку вызывает.
Да кстати, буду ОЧЕНЬ благодарен если кто подскажет аналог BitBlt (и чтоб работало на КПК) то мне вообще нафик не нужны будут эти пикчербоксы...
Номер ответа: 3
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #3
Добавлено: 30.12.05 17:02
Нашёл ещё вот это по рисованию, но из-за недостатка опыта (читать: мозгов) так и не понял как распорядиться полученым битмапом
Public Function Copy(ByVal srcBitmap As Bitmap, ByVal section As Rectangle) As Bitmap
' Create the new bitmap and associated graphics object
Dim bmp As New Bitmap(section.Width, section.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
' Draw the specified section of the source bitmap to the new one
g.DrawImage(srcBitmap, 0, 0, section, GraphicsUnit.Pixel)
' Clean up
g.Dispose()
' Return the bitmap
Return bmp
End Function 'Copy
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 30.12.05 18:07
Про копирование изображения. А что именно тебя смущает в этом коде?
Про AddHandler. Создаешь процедуру обработки события такого же вида, как если бы у тебя был статически созданный PictureBox (только Handles в конце не надо). При создании PictureBox'а вызываешь AddHandler, чтобы подписаться на событие. Примерно так:
AddHandler pic.Click, AddressOf MyClick
, где pic - PictureBox, MyClick - имя процедуры обработки события.
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 30.12.05 18:21
AddHandler УРА! работает! разве что индекс не получает - да и пох. к координатам привяжу.
Про копирование изображения.
не знаю как привязать это дело к форме. блин, так уже свойство .hDC укоренилось в сознании.... короче не рисует и всё
Номер ответа: 6
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #6
Добавлено: 02.01.06 09:33
Насчет индекса.. Заведи массив:
И складывай их туды:
Dim pic As New PictureBox
pic.Visible=True
pic.Position = New Point ((i Mod 5) * 10, (i \ 5) * 10)
pic.Size = New Size(8, 8)
Me.Controls.Add pic
pics(i) = pic
Next
Номер ответа: 7
Автор ответа:
.::EclipsE::.
ICQ: 208952501
Вопросов: 22
Ответов: 85
Профиль | | #7
Добавлено: 16.02.06 18:44
А как теперь узнать по какому кликнули?
Номер ответа: 8
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #8
Добавлено: 16.02.06 18:52
В обработчик события в параметре sender передается ссылка на контрол, сгенерировавший событие.