回 帖 发 新 帖 刷新版面

主题:关于combobox提示信息

请教各位大虾和版主:
    我在combobox里添加了一些项目,项目字数多少不一,所以有些项目在combobox中显示不完全,由于其他原因又不能把combobox控件设得太宽,我想这个问题的解决方法可以如下:
    1.动态增加combobox的下拉宽度
    2.当鼠标移动到combobox某一项时,显示tipoftext
可是这两种方法我都不会,哪位能帮帮我啊?太感谢啦!

回复列表 (共8个回复)

沙发

    要用到API函数。

板凳

什么函数?如何用?

3 楼

如果你连函数都不知道是怎样用的话,我建议你去买一些关于函数的书籍来看看,或者上网下载

4 楼

师师:
    看你牛比烘烘的,我说的问题,你能给个答案吗?我看未必!

5 楼

以下转载自《 Visual Basic 案例教程》,仅供学习研究,不要用于其他用途:

'
'----------------------By 陈锐------------------------------
'如果你要在Internet或BBS上转贴文章,请通知我知道
'Email: blackcat@nease.net  develope@163.net
'请参观我的站点 http://www.nease.net/~blackcat

'这个程序演示如何给List Box的每个列表行加上不同的提示行
'运行该程序,当鼠标移动到任一行上后,弹出的ToolTip就会提示该行的完整内容
'
Option Explicit

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 "清华大学"
        .AddItem "北京大学"
        .AddItem "复旦大学"
    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
    '如果没有按钮被按下
    If Button = 0 Then
        '转换坐标单位
        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
                .ToolTipText = .List(lIndex)
            Else
                .ToolTipText = ""
            End If
        End With
    End If
End Sub

6 楼

z.xh兄:
    谢谢你的指点,我还想知道,在combo中如何实现tooltiptext呢?也就是说,要捕获鼠标在combo中滚动到某一项目的位置,应该在combo的哪个事件里写代码呢?

7 楼

用mousemove事件试试看。

8 楼

combo中是没有mousemove的啊!

我来回复

您尚未登录,请登录后再回复。点此登录或注册