gpt4 book ai didi

vb.net - 在vb.net中获取垂直滚动条位置作为整数

转载 作者:行者123 更新时间:2023-12-04 14:43:23 26 4
gpt4 key购买 nike

我有一个 RichTextBox,我需要找到垂直滚动条的位置。

如果没有 Pinvoke,有什么办法可以做到这一点吗?如果没有,用 Pinvoke 做这个的方法是什么?

我需要返回一个整数值。

感谢您的帮助!

最佳答案

如果没有 PInvoke,我不知道有什么方法可以做到这一点。您可以使用 PInvoke 调用 GetScrollPos .

这里是您可以尝试的方法。

第 1 步:通过扩展标准 RichTextBox 创建自定义 RichTextBox 控件。

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Windows.Forms

Namespace WindowsFormsApplication1

Public Class MyRichTextBox
Inherits RichTextBox
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function GetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer) As Integer
End Function

<DllImport("user32.dll")> _
Private Shared Function SetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer, ByVal nPos As Integer, ByVal bRedraw As Boolean) As Integer
End Function

Private Const SB_HORZ As Integer = &H0
Private Const SB_VERT As Integer = &H1

''' <summary>
''' Gets and Sets the Horizontal Scroll position of the control.
''' </summary>
Public Property HScrollPos() As Integer
Get
Return GetScrollPos(DirectCast(Me.Handle, IntPtr), SB_HORZ)
End Get
Set(ByVal value As Integer)
SetScrollPos(DirectCast(Me.Handle, IntPtr), SB_HORZ, value, True)
End Set
End Property

''' <summary>
''' Gets and Sets the Vertical Scroll position of the control.
''' </summary>
Public Property VScrollPos() As Integer
Get
Return GetScrollPos(DirectCast(Me.Handle, IntPtr), SB_VERT)
End Get
Set(ByVal value As Integer)
SetScrollPos(DirectCast(Me.Handle, IntPtr), SB_VERT, value, True)
End Set
End Property
End Class
End Namespace

这将向标准 RichTextBox 添加两个属性:HScrollPos 和 VScrollPos。这些属性将允许您获取和设置控件中的水平和垂直滚动条位置。

第 2 步:创建一个测试表单并试用您的控件。

在与您的自定义控件相同的项目中创建一个 Winform。将自定义控件放在测试窗体中,并在窗体上添加一个按钮。在窗体的 Click 事件中,添加以下代码以查看自定义控件的垂直滚动位置。

Console.WriteLine(myRichTextBox1.VScrollPos)

需要注意的几点:

  1. 如果您的控件当前未显示垂直滚动条,调用 HScrollPos 会使你的崩溃程序。有几个很明显解决这个问题的方法(检查之前显示滚动条检查属性(property),或使垂直滚动条始终可见等)。

  2. 取决于控制(和 可能形成)的大小(不 提及文本内容的变化 的控制),设置 VScrollPos 会使你的程序崩溃或者 不把它恢复到原来的位置 当 VScrollPos 值是 已保存。

  3. 我从未使用过此代码。我 以为你的问题是 有趣并做了一点 研究得出我的答案。

关于vb.net - 在vb.net中获取垂直滚动条位置作为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1619783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com