【发布时间】:2013-06-06 20:12:49
【问题描述】:
创建一个包含三个图片框的新表单。此代码旨在在鼠标进入图片框时绘制边框,并在离开时将其移除。结果不一致。有时它会绘制/删除边框,有时则不会。这段代码并不复杂。使用 VS 2012。
Private Sub PictureBox_MouseEnter(sender As Object, e As EventArgs) _
Handles PictureBox1.MouseEnter, PictureBox2.MouseEnter, PictureBox3.MouseEnter
Dim pb As PictureBox = DirectCast(sender, PictureBox)
pb.BorderStyle = BorderStyle.FixedSingle
' Debug.WriteLine("E " & pb.Name)
End Sub
Private Sub PictureBox_MouseLeave(sender As Object, e As EventArgs) _
Handles PictureBox1.MouseLeave, PictureBox2.MouseLeave, PictureBox3.MouseLeave
Dim pb As PictureBox = DirectCast(sender, PictureBox)
pb.BorderStyle = BorderStyle.None
' Debug.WriteLine("X " & pb.Name)
End Sub
【问题讨论】:
-
你的
PictureBox控件里面有子控件吗? -
不,他们没有。新建表单,添加三个图片框和上面的代码。
-
什么平台; Winforms,WPF?
-
好的,我可以重现它,虽然看起来只有
MouseLeave有时不会触发。奇怪。 -
更改 BorderStyle 属性有太多副作用,原生窗口被破坏并重新创建。这使它忘记了鼠标输入。您需要选择其他东西来指示状态。你可以很容易地画出类似的东西。