powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа класса с внешним обектом.
8 сообщений из 8, страница 1 из 1
Работа класса с внешним обектом.
    #34586392
Itehis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема вот в чем: мне нужно, чтобы внутри класса происходила обработка ивента "MouseDown"
Однако обьект(PictureBox) находится в основной форме(Class Form1), а не в созданом мной новом классе.

Конечно, можно получить этот обьект так:
Код: plaintext
Public Sub New(ByVal DrawWindow As System.Windows.Forms.PictureBox)

Но как заставить его обрабатывать ивент "MouseDown" по этому обьекту? У меня есть следуещее:

Код: plaintext
Private Sub DrawWindow_MouseDown(ByVal sender As Object, By Val e As System.Windows.Forms.MouseEvent.Args) Handles DrawWindow.MouseDown

Как свзять эти два Саб-а? Один в другой всунуть не выйдет похоже, видимо нужна другая форма записи...
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34586516
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял, вам надо подписаться на события PictureBox.
Это делается так:
В классе объявлется переменная
Код: plaintext
Private WithEvents m_PictureBox1 as PictureBox
Теперь на ее события можно подписаться. Выбираете эту переменну в окне редактора кода ее слева, и нужное событие справа.
У вас получится вот это:
Код: plaintext
1.
2.
Private Sub m_PictureBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

End Sub
В процедуре инициализации класса (если таковой нет -создайте) надо передать ссылку:
Код: plaintext
1.
2.
Public Sub Initialize(byval PictrueBoxContainer as PictureBox)
   Set m_PictureBox1 = PictrueBoxContainer 
End Sub
Создавая экземпляр этого класса, добавляете вызов инициализации:
Код: plaintext
1.
Dim Obj As MyClass
Obj.Initialize Picture1
Все готово к работе
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34586683
Itehis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибок с виду нет. Но дальше инициализации и передачи ссылки дело не идет.
Во время работы программы при клике на "PictureBox" просто ничего не происходит. Как будто я ни накакие события "MouseDown" не подписывался.
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34586781
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34586816
Itehis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, не обратил внимание на версию. У меня MVB 2005. Видимо синтаксис несколько другой нужен. Из выше приведенного примера, после апгрейда и редактирования, получилась таже проблема. Не перехватывает ивент...
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34586823
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свой пример я делала под VB6.
Не знаю, обратили Вы внимание на то обстоятельство, что в примере Startup Object’ом является процедура Main (это устанавливается в свойствах проекта). Опять же, не знаю, как там все устроено в VB 2005. Попробуйте добавить в класс формы код:
Код: plaintext
1.
2.
Private Sub Form_Load()
  Call Main
End Sub
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34586885
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть форум VB.NET для таких вопросов.
Но раз уж обратились, получайте ответ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Public Class Form1

   Private Class MyClass1
      Private WithEvents m_PictureBox1 As Windows.Forms.PictureBox
      Private m_Label1 As Label

      Public Sub New(ByVal PictureContainer As Windows.Forms.PictureBox)
         m_PictureBox1 = PictureContainer
         m_Label1 = New Label()
         m_Label1.Parent = m_PictureBox1
         m_Label1.Visible = True
         m_Label1.Location = New Point( 1 ,  1 )
         m_Label1.AutoSize = True
      End Sub

      Private Sub m_PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles m_PictureBox1.MouseMove
         m_Label1.Text = "X=" & e.X & vbCrLf & "Y=" & e.Y
      End Sub
   End Class

   Private m_PictureBox1 As PictureBox
   Private m_Object As MyClass1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      m_PictureBox1 = New PictureBox
      m_PictureBox1.Parent = Me
      m_PictureBox1.Dock = DockStyle.Left
      m_PictureBox1.Width = Me.Width \  2 
      m_PictureBox1.BorderStyle = BorderStyle.FixedSingle
      m_PictureBox1.Visible = True
      m_Object = New MyClass1(m_PictureBox1)
   End Sub
End Class
...
Рейтинг: 0 / 0
Работа класса с внешним обектом.
    #34587644
Itehis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, все верно, благодарю за помощь.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа класса с внешним обектом.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]