求教:自定义控件的焦点事件,谢谢!!!

ahbc123 2013-10-17 07:31:03
有一个变量ivb as Boolean
我想在控件获得焦点(不论是鼠标点击,还是tab键等方法) ivb=True
我想在控件失去焦点 ivb=Flase

谢谢!!!
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahbc123 2013-10-19
  • 打赏
  • 举报
回复
谢谢!!!控件重新加载后就可以了,不需要加MouseClick,谢谢!!!
sunhongwu 2013-10-17
  • 打赏
  • 举报
回复
如果使用Tab进入焦点不能很好工作的话,请检查别处的代码!
sunhongwu 2013-10-17
  • 打赏
  • 举报
回复
你的自定义控件是继承于Control吗?
你的代码我看了,关于焦点的判断的代码是没有问题的。
这段代码在使用Tab进入焦点时应该可以很好的工作。
在鼠标点击获得焦点时,需要增加额外的代码,比如:
   Private Sub myControl_MouseClick(sender As Object, e As MouseEventArgs) Handles Me.MouseClick
Me.Focus()
End Sub
sunhongwu 2013-10-17
  • 打赏
  • 举报
回复
把ivb定义为Private,然后再控件的gotFocus中写入代码ivb=True,在控件的LostFocus中写入代码ivb=False.
ahbc123 2013-10-17
  • 打赏
  • 举报
回复
谢谢!!!我用了下面的,没用。求教!!!


Private FocuMe As Boolean

 Protected Overrides Sub OnGotFocus(e As EventArgs)
        MyBase.OnGotFocus(e)
               Refresh()
        FocuMe = False
 End Sub

    Protected Overrides Sub OnLostFocus(e As EventArgs)
        MyBase.OnLostFocus(e)
        FocuMe = True
    End Sub

.....
.....
 Private Sub pich(ByVal a As Short, g As Graphics, TemInt As Integer)
        g.FillPolygon(New SolidBrush(Color.Black), {New Point(8, a * 18 + 10), New Point(16, a * 18 + 14), New Point(8, a * 18 + 18)})
        If FocuMe = True Then
            g.FillRectangle(New SolidBrush(Color.FromArgb(&H71EB2000)), 0, a * 18 + TemInt, Me.Width, 18)
        End If

        If FocuMe = False Then
            g.FillRectangle(New SolidBrush(Color.FromArgb(&H71AA0000)), 0, a * 18 + TemInt, Me.Width, 18)
        End If
    End Sub

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧