문제

나는 컨트롤고 나를 찾을 필요 위치의 수직 스크롤 막대가 표시됩니다.

하는 방법은 없지 않고 이 를?하지 않을 경우,어떤 방법입니다 이것을 하 를?

해 정수 값을 반환.

도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

지 않는 모든 방법을 알고 하지 않고 이 를.당신이 사용할 수 있습 를 전화 GetScrollPos.

여기에는 방법 당신은 그것을 시도 할 수 있습니다.

1 단계: 맞춤 컨트롤 제어를 확장하여 표준됩니다.

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

이것은 두 개를 추가하는 속성을 표준 컨트롤:HScrollPos 및 VScrollPos.이러한 특성을 허용할 것이 얻는다고 설정한 수평 및 수직 스크롤바 위치에 있습니다.

2 단계: 성 테스트를 형성하고 있습니다.

을 만들 Winform 같은 프로젝트에서 사용자 지정 제어합니다.드롭 사용자 지정 제어를 테스트에서 형성하고 추가 버튼 형태입니다.형태의 이벤트를 클릭합,다음 코드를 추가합 보려면 사용자 정의 컨트롤의 수직 스크롤하는 위치를 표시합니다.

Console.WriteLine(myRichTextBox1.VScrollPos)

몇 사항:

  1. 는 경우에 당신의 통제하지 않은 현재 을 표시하는 수직 스크롤 전화 HScrollPos 이 충돌 프로그램입니다.거기에 몇 가지 분명 이 주위에 방법(는지 확인 스크롤 막대가 표시되기 전에 검사 서를 만들기 수직 스크롤 막대가 항상 표시,etc.).

  2. 하는 방법에 따라 컨트롤( 가능성 형태)의 크기(지 언급에서 변경 텍스트 내용 의 제어),설정 VScrollPos 충돌할 수 있습니다 당신의 프로그램이나 지만,그것은 위치 에 있었을 때 VScrollPos 값 저장됩니다.

  3. 나는 사용되지 않습니다.나 생각하는 당신의 질문이었다 재미있고 조금의 연구와 함께 올 내 대답이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top