我有一个 MouseEnter 事件,当前处理我的表单上的一些自定义控件。该程序是一个纸牌游戏。我有一个集合(handCards),当用户绘制卡片时会填充该集合,然后将最新的卡片添加到表单中。该集合包含各种自定义类型的卡片,所有这些卡片都继承自 picturebox。从牌堆中抽出卡片并将其添加到表单中效果很好。我遇到的麻烦是,在运行时,绘制卡片并将其添加到表单后,我创建了一个 addhandler 代码行,让这些卡片响应我的 MouseEnter 事件,但我的 addhandler 代码行告诉我MouseEnter 不是对象的事件。如何解决这个问题,以便在绘制卡片并将其添加到表单后,当鼠标进入新的自定义控件时,我的 MouseEnter 事件会触发?这是我尝试过的众多方法之一,我认为应该是最简单、最容易实现的方法。
deck.DrawCard()
AddHandler handCards(handCards.Count).MouseEnter, AddressOf Cards_MouseEnter
附注MouseEnter 事件对于运行之前窗体上的自定义控件效果很好,它所做的就是获取控件的图像并通过将图像放置到窗体上更大的卡片上来放大它。
最佳答案
我假设您的 handCards 集合是一个对象集合。尝试使用 CType 将其转换为正确的类型,像这样:
AddHandler CType(handCards(handCards.Count), PictureBox).MouseEnter, AddressOf Cards_MouseEnter
正如 @Jason 提到的,使用 handCards.Count
作为索引将不起作用,因为它是项目总数,而您的索引是从零开始的,并且会比计数减一。
所以handCards(handCard.Count)
应该是handCards(handCards.Count -1)
关于vb.net - Visual Studio 自定义控件错误的 AddHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777461/