Я новичок в визуальном базовом и задавался вопросом, можно ли запускать события в классе, основываясь на действии с формой.Невозможно обработать событие в другом классе
Так следующее моя проблема: У меня есть форма с именем Main, с коробкой картина под названием picPID и класс под названием add_new
То, что я хочу сделать, это: , когда правая MouseButton нажата, код для обработки событий помещается внутри класса под названием add_new
Я думал, что я мог бы просто объявить его следующим образом:
Sub meMouseDown (отправитель As Object, е Как MouseEventArgs) Ручки Main.picPID.MouseDown
Но я получаю ошибку о том, что я должен объявить его WithEvents, я попытался объявить PictureBox как:
Общественный общий WithEvents как PictureBox
но dident помощь, любые sugestions? Это не проблема с кодом в основной форме, но это приведет к большому количеству кода, поэтому я надеялся разделить его.
Не уверен, что это хорошая идея. Разделение функциональности пользовательского интерфейса формы в отдельных классах заставляет их зависеть друг от друга. По-видимому, это нарушает некоторые основные принципы ООП. Возможно, если вы хотите создать многоразовый код для функции PictureBox, вы должны попытаться расширить класс PictureBox, создав свой производный класс PictureBox – Steve
'Handles Main.picPID.MouseDown' - довольно неприятная ловушка VB.NET, которая вам понадобится научиться избегать. 'Main' - это имя * типа *, но требуется ссылка на объект. VB.NET слишком прощает, позволяя вам использовать 'Main' в вашем коде, когда вы действительно имеете в виду объект. Здесь это не сработает. Anyhoo, вам нужно использовать оператор AddHandler. –