想让combo box具有横向滚动条,怎么做?

解决方案 »

  1.   

    它有一个rightmagin 把它设它一点比如:50000
      

  2.   


        可用sendmessage combo1.hwnd,CB_SETDROPPEDWIDTH,400,0 把下拉列表设成足够宽,不需要用横向滚动条。
      

  3.   

    \\ victorycyz(中海) ( )
    说的对 呀 你是不是显示不过来了。 ------------------------
    Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
    Const CB_SETDROPPEDWIDTH = &H160'  设置ComboBox下拉选单长度函数
    Public Sub SetComboHeight(ComboBox_Obj As ComboBox, NewHeight As Long)
        Dim OldScaleMode As Integer
        If TypeOf ComboBox_Obj.Parent Is Frame Then Exit Sub
        ' 改变ComboBox控件的容器的坐标度量单位为象素
        OldScaleMode = ComboBox_Obj.Parent.ScaleMode
        ComboBox_Obj.Parent.ScaleMode = vbPixels
        ' 重新定义ComboBox的尺寸
        MoveWindow ComboBox_Obj.hwnd, ComboBox_Obj.Left, _
        ComboBox_Obj.Top, ComboBox_Obj.Width, NewHeight, 1
        ' 恢复ComboBox控件的容器的坐标度量单位
        ComboBox_Obj.Parent.ScaleMode = OldScaleMode
    End Sub'  设置ComboBox下拉选单宽度函数
    Public Sub SetComboWidth(ComboBox_Obj As ComboBox, NewWidth As Long)
        '  NewWidth 是宽度,单位是 pixels
        SendMessage ComboBox_Obj.hwnd, CB_SETDROPPEDWIDTH, NewWidth, 0
    End SubPrivate Sub Form_Load()
        Dim i As Integer
        '  向ComboBox添加项
        For i = 0 To 40
            Demo_Combo.AddItem ("This is the long Item " + CStr(i))
        Next i
    End Sub'  改变ComboBox下拉选单长度和宽度
    Private Sub Change_But_Click()
        Call SetComboHeight(Demo_Combo, 300)
        Call SetComboWidth(Demo_Combo, 200)
    End Sub
      

  4.   

    我的combo box是不可以编辑的,用上面的方法还是不行的。所以我希望还是可以有横向滚动条。
      

  5.   

    一定要横向滚动条的话,你可以做一个textbox和listbox组成的自定义控件。listbox可以有横向滚动条的。    sendmessage list1.hwnd,lb_sethorizentalextent,400,0