Vb.net Can';点击按钮
所以,我正在开发一个YouTube模拟游戏。目前我正在YouTube网站上工作。在游戏中,你应该能够自定义你的频道头像和横幅。因此,就像在真实的YouTube网站上一样,我创建了两个按钮,当单击它们时,会打开一个Vb.net Can';点击按钮,vb.net,button,Vb.net,Button,所以,我正在开发一个YouTube模拟游戏。目前我正在YouTube网站上工作。在游戏中,你应该能够自定义你的频道头像和横幅。因此,就像在真实的YouTube网站上一样,我创建了两个按钮,当单击它们时,会打开一个OpenFileDialog,播放器应该在其中选择图像文件。唯一的问题是,由于某种原因,您无法单击该按钮下面是表单的外观: 这是我的代码: #Region "Edit Buttons" Sub ShowEditBanner() Handles BannerBox.MouseEn
OpenFileDialog
,播放器应该在其中选择图像文件。唯一的问题是,由于某种原因,您无法单击该按钮下面是表单的外观:
这是我的代码:
#Region "Edit Buttons"
Sub ShowEditBanner() Handles BannerBox.MouseEnter
BannerEditButton.Visible = True
AvatarEditButton.Visible = True
BannerEditButton.BringToFront()
AvatarEditButton.BringToFront()
End Sub
Sub ShowEditAvatar() Handles AvatarBox.MouseEnter
BannerEditButton.Visible = True
AvatarEditButton.Visible = True
BannerEditButton.BringToFront()
AvatarEditButton.BringToFront()
End Sub
Sub HideEditBanner() Handles BannerBox.MouseLeave
BannerEditButton.Visible = False
AvatarEditButton.Visible = False
End Sub
Sub HideEditAvatar() Handles AvatarBox.MouseLeave
BannerEditButton.Visible = False
AvatarEditButton.Visible = False
End Sub
#End Region
Sub EditAvatar() Handles AvatarEditButton.Click
If AvatarFileDialog.ShowDialog = DialogResult.OK Then
Try
Dim Img As Image = Image.FromFile(AvatarFileDialog.FileName)
AvatarBox.Image = Img
Catch ex As Exception
MsgBox("Invalid file.", MsgBoxStyle.Critical, "Error")
End Try
End If
End Sub
任何帮助都将受到感谢
~Mika/OneByte当按钮的
MouseEnter
事件试图显示按钮时,您遇到的是一个错误,而AvatarBox的MouseLeave
事件试图隐藏按钮时,该错误就会发生
要修复此问题,只需检查MouseLeave
事件中的鼠标是否仍在控件的边界内。如果没有:隐藏按钮
If AvatarBox.ClientRectangle.Contains(Me.PointToClient(Cursor.Position)) = False Then
AvatarEditButton.Visible = False
End If
该逻辑适用于两个控件。您不应手动创建事件处理程序,使用“代码编辑器”窗口中的下拉列表,或将“属性窗格”视图更改为“事件”,然后单击所需的事件处理程序
EditAvatar
不是合法事件签名这是当鼠标进入/离开按钮时尝试显示/隐藏按钮时发生的错误。不久前我自己也遇到了这个问题,让我检查一下我的代码并为您写一个答案……为了添加到Proputix的评论中,您显示的事件处理程序的参数应该是(发送者作为对象,e作为事件参数)
。我同意他不应该手动添加处理程序,但当以这种方式添加处理程序时,这并不重要。如果声明正确,它就是同一个东西,下拉列表就会找到它。如果您通过AddHandler代码添加它,那么我会说这是错误的,除非您真的知道自己在做什么。在某些情况下,您需要以这种方式添加处理程序。动态添加控件就是一个例子。你仍然对此有问题吗?这有点奏效。我现在可以单击AvatarEditButton,但不能单击BannerEditButton。我的代码现在看起来是这样的:@OneByte\:如果您只需更改为正确的按钮和容器名称,同样的方法当然也适用于BannerBox.MouseLeave
。我只是懒得写这两个:)。编辑:正如我在你的代码中看到的,你可以删除整个HideEditBanner()
方法,然后像这样声明你的另一个方法:Sub-HideEditAvatar()处理AvatarBox.MouseLeave,BannerBox.MouseLeave
。