【发布时间】:2015-05-20 22:02:28
【问题描述】:
我对 Visual Basic 有点陌生,想知道是否可以根据表单中的操作触发类中的事件。
所以以下是我的问题: 我有一个名为 Main 的表单,带有一个名为 picPID 的图片框 还有一个叫 add_new 的类
我想做的是: 单击鼠标右键时,事件处理的代码将放在名为 add_new 的类中
我想我可以通过以下方式声明它:
Sub meMouseDown(sender As Object, e As MouseEventArgs) 处理 Main.picPID.MouseDown
但我收到一个错误,说我必须用Events 声明它,我试图将图片框声明为:
Public shared withEvents as picturebox
但它没有帮助,有什么建议吗?将代码放在 Main 窗体中没有问题,但会导致大量代码,所以我希望将其拆分。
【问题讨论】:
-
不确定这是否是个好主意。将表单的 UI 功能拆分为单独的类会使它们相互依赖。它似乎违反了 OOP 的一些基本原则。也许,如果你想为 PictureBox 功能创建可重用的代码,你应该尝试扩展 PictureBox 类来创建你的 PictureBox 派生类
-
Handles Main.picPID.MouseDown是一个非常讨厌的 VB.NET 陷阱,您必须学会避免。Main是一个类型名称,但需要一个对象引用。 VB.NET 允许您在您的代码中使用Main时您真的是指一个对象,这太宽容了。在这里行不通。 Anyhoo,你必须在这里使用 AddHandler 语句。
标签: vb.net