我想为多行文本框实现一个花哨的滚动条,如下图所示:
那个花哨的滚动条的任何想法?
P / S:我想要vb.net解决方案.
如果花哨的滚动条可以实现为另一个控件(您的图像实际上看起来像这样),这里是支持自定义滚动的ListBox的代码:
原文链接:https://www.f2er.com/vb/255506.htmlImports System.Runtime.InteropServices Public Class CustomScrollListBox Inherits ListBox Public Sub Scroll(ByVal percentage As Single) If (percentage < 0.0!) Then Throw New ArgumentException(Nothing,"percentage") End If ' Sends the scroll / set position Windows message Const WM_VSCROLL As Integer = &H115 Const SB_THUMBPOSITION As Integer = 4 Dim wp As Integer = CInt(((percentage * MyBase.Items.Count) * 65536.0!)) + SB_THUMBPOSITION CustomScrollListBox.SendMessage(MyBase.Handle,WM_VSCROLL,New IntPtr(wp),IntPtr.Zero) End Sub <DllImport("user32.dll")> _ Private Shared Function SendMessage(ByVal hWnd As IntPtr,ByVal msg As Integer,ByVal wParam As IntPtr,ByVal lParam As IntPtr) As IntPtr End Function Protected Overrides ReadOnly Property CreateParams() As CreateParams Get ' Removes the vertical scroll window style Dim p As CreateParams = MyBase.CreateParams Const WS_VSCROLL As Integer = &H200000 p.Style = (p.Style And -WS_VSCROLL) Return p End Get End Property End Class
这是一个使用它的示例表单.我已将自定义滚动条实现为标准的Trackbar(trackBar1),例如:
Public Class Form1 Private trackBar As TrackBar Private listBox As CustomScrollListBox Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) ' initialize some listBox props listBox = New CustomScrollListBox listBox.Location = New Point(&H19,210) listBox.Name = "listBox2" listBox.Size = New Size((&H17D - Me.TrackBar1.Width),&HAD) listBox.TabIndex = 1 MyBase.Controls.Add(listBox) ' add some items Dim i As Integer For i = 0 To 100 - 1 listBox.Items.Add(("item" & i)) Next i End Sub Private Sub TrackBar1_Scroll(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles TrackBar1.Scroll ' compute trackbar's position as a percentage listBox.Scroll(CSng(TrackBar1.Maximum - TrackBar1.Value) / TrackBar1.Maximum - TrackBar1.Minimum) End Sub End Class