ListView和TreeView可以通过HitTest来实现对各项的控制,那么ListBox有没 有方法方法实现对其项的控制呢?答案上肯定的。 下面的例子实现的ListBox各项的自动选择,就象弹出ComboBox的下拉框,然后 移动鼠标时,光条跟着移动。 >>步骤1----建立新工程,在窗体上放置ListBox控件。 >>步骤2----编写如下代码:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Const LB_ITEMFROMPOINT = &H1A9
Private Sub Form_Load() With List1 .AddItem "程序编制:VB编程乐园" .AddItem "Mailto:vbeden@21cn.com" .AddItem "Http://www.vbeden.com" End With End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single)
Dim lXPoint As Long Dim lYPoint As Long Dim lIndex As Long lXPoint = CLng(X / Screen.TwipsPerPixelX) lYPoint = CLng(Y / Screen.TwipsPerPixelY) With List1 lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, _ ByVal ((lYPoint * 65536) + lXPoint)) If (lIndex >= 0) And (lIndex <= .ListCount) Then .Selected(lIndex) = True Else .Selected(lIndex) = False End If End With End Sub
>>步骤3----编译运行,鼠标在ListBox上移动,看看是不是自动选择。 ************************************************************************************ ListView控件和TreeView控件都提供了HitTest方法。这个方法返回对位于x和 y 坐标的 ListItem 对象或 Node 对象的引用。通常与拖放操作或鼠标移动操作一 起使用,来确定鼠标下的目标项在当前位置是否可用。 其语法为: object.HitTest (x As Single, y As Single) 下面的例子实现ListView不同的项具有不同的ToolTipText。 >>步骤1----建立新工程,加入部件“Microsoft common controls 6.0(sp3)”。 >>步骤2----在工程上放置ListView控件。 >>步骤3----编写如下代码:
Private Sub Form_Load() ListView1.ListItems.Add , , "程序编制:VB编程乐园" ListView1.ListItems.Add , , "EMail:vbeden@21cn.com" ListView1.ListItems.Add , , "Http://www.vbeden.com" End Sub
Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Dim iItem As ListItem Set iItem = ListView1.HitTest(x, y) If iItem Is Nothing Then Exit Sub ListView1.ToolTipText = iItem.Text End Sub
>>步骤4----编译运行,看看是不是不同的项对应不同的提示。  
|