Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Клик по програмно созд-му PictureBox (в массиве) Добавлено: 30.12.05 08:40  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru
Всем здравствуйте!
я вот совсем недавно ВБ.НЕТ начал осваивать...
вот пишу прогу. короче в ней создаётся массив элементов 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-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 30.12.05 13:33
См. инфу о AddHandler.

Ответить

Номер ответа: 2
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #2
Добавлено: 30.12.05 16:33
Чё то не могу просечь в этой штуке...
Нашёл код в MSDN:


Sub TestEvents()
   ;Dim 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-сайт: xury.zx6.ru
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 30.12.05 18:07
Про копирование изображения. А что именно тебя смущает в этом коде?

Про AddHandler. Создаешь процедуру обработки события такого же вида, как если бы у тебя был статически созданный PictureBox (только Handles в конце не надо). При создании PictureBox'а вызываешь AddHandler, чтобы подписаться на событие. Примерно так:

AddHandler pic.Click, AddressOf MyClick

, где pic - PictureBox, MyClick - имя процедуры обработки события.

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 30.12.05 18:21
AddHandler УРА! работает! разве что индекс не получает - да и пох. к координатам привяжу.

Про копирование изображения.
не знаю как привязать это дело к форме. блин, так уже свойство .hDC укоренилось в сознании.... короче не рисует и всё

Ответить

Номер ответа: 6
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 02.01.06 09:33
Насчет индекса.. Заведи массив:

Private pics(14) As PictureBox


И складывай их туды:

For i As Int32 = 0 To 14
   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-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 16.02.06 18:52
В обработчик события в параметре sender передается ссылка на контрол, сгенерировавший событие.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам