急!在VB6中,当鼠标在Label控件上方时,Label文字的颜色变红,当鼠标移出后,文字恢复黑色。使用什么事件?

lmxctds 2003-07-03 03:45:32
急!在VB6中,当鼠标在Label控件上方时,Label文字的颜色变红,当鼠标移出后,文字恢复黑色。使用什么事件?
在一个窗体上有十多个这样的Label控件,都是这样。
最好能有源代码。
...全文
380 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
nik_Amis 2003-07-05
  • 打赏
  • 举报
回复
这个....基本上.........很难!

label没有hwnd,所以没有办法真正的检测到mouseout事件

你可以用textbox

然后用3个API:
setcapture/releasecapture/windowfrompoint

来确定mouseout事件

你可以把一个窗口半遮住textbox
鼠标从窗口移到texbox上
此时textbox变色
在从textbox移回窗口上
textbox恢复

这说明是真正的mouseout

否则都是粗糙的mouseout


我记的曾经有人用drag,事件方法实现了类似的mouseout但是当时没有仔细看





icansaymyabc 2003-07-05
  • 打赏
  • 举报
回复
你应该把光标形状改成一把刀,
这样的话,你的刀子进去,它就变红了,刀子出来就由红转黑。必须这样才会合理,否则就做不成
zhonghua79 2003-07-05
  • 打赏
  • 举报
回复
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = 0
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = &HFF
End Sub
youchenglong 2003-07-05
  • 打赏
  • 举报
回复
要是刚好有个label在窗体的边上,不小心稍快地向外一拉鼠标, 不就露了吗?
youchenglong 2003-07-05
  • 打赏
  • 举报
回复
猪者 Label1.ForeColor = vbBlack 这个运行时,红的可能是“label1”这几个汉字而不是label了吧
猞猁狲 2003-07-04
  • 打赏
  • 举报
回复
想想嘛!鼠标移来移去的!肯定就那几个鼠标事件嘛!MouseMove()
starsoulxp 2003-07-04
  • 打赏
  • 举报
回复
使用mousemove事件控制
MarchRain 2003-07-04
  • 打赏
  • 举报
回复
我以前也试过,mousemove里要加判断是vbred或vbblack,不然老是要执行里面的赋值语句

但实际运行时有点问题,我也没想出好办法:

如果label数量多而且距离近的话,鼠标从一个label快速移到另一个label时form_mousemoves

根本反应不过来,这样就可能有两个或多个label是vbred。
beibeilong 2003-07-04
  • 打赏
  • 举报
回复
Label1_MouseMove
kmcyz 2003-07-04
  • 打赏
  • 举报
回复
粘贴复制时对话框选择“是”创建控件数组。
penglc 2003-07-04
  • 打赏
  • 举报
回复
控件做成数组:

  先添一个控件 label1,然后复制该控件,在窗口上粘贴,vb会提示你是否创建该数组控件?  
你按是,然后连续粘够你想要的label, 数组编号从 0-N编,由于数组控件名称全是label1, 所以label1.index为编号标识.

在该控件的任何事件中,都有一个index为标识识别是属于哪一个label产生的事件。
along2000 2003-07-04
  • 打赏
  • 举报
回复
顺便问一句Label1做成数据,怎个搞法?
谢谢!
lwlxg 2003-07-04
  • 打赏
  • 举报
回复
先变成控键组,再用mousemove事件
czqMaster 2003-07-03
  • 打赏
  • 举报
回复
up
penglc 2003-07-03
  • 打赏
  • 举报
回复
简单的话,把label1控件做成数组:





Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer

'这里是处理当鼠标移开label控件时,所有label恢复黑色
For i = Label1.LBound To Label1.UBound
Label1(i).ForeColor = 0
Next i

End Sub

Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Label1(Index).ForeColor = vbRed 'index就是控件编号了,所有label控件就这一句话变红色

End Sub
penglc 2003-07-03
  • 打赏
  • 举报
回复
把label做成数据, 一个事件里就可以了处理了。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = vbBlack
End Sub

Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Label1(Index).ForeColor = vbRed '这里index就是控件的编号了100个label都是这句话控制

End Sub
lmxctds 2003-07-03
  • 打赏
  • 举报
回复
有没有更加节省的办法,大家注意,有多达10多个这样的Label阿!
yefm 2003-07-03
  • 打赏
  • 举报
回复
up
ll_angel 2003-07-03
  • 打赏
  • 举报
回复
哎,大家都说啦,俺说啥,用MouseMove事件
kenfyk 2003-07-03
  • 打赏
  • 举报
回复
Label1_MouseMove
内容同linfuyong
加载更多回复(7)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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