EnsureVisible in TreeView: how to ensure that horiz. scrollbar is aligned left

Posted on 2009-03-31
Last Modified: 2012-05-06

I have a tree view with eg. following nodes

# People
+--# Custumers
     +-- # Anne Charles, Hillroad 14, 7766 MyTown, My Country
     +-- # Steve Jones, Forestroad 12, 7766 MyTown, My Country

With the command


I can ensure that "Anne Charles" is visible within the treeview. My problem is: If the treeview is not wide enough to show the complete node text of this node, the horizontal scroll bar is automatically moved to the right so that node structure shown left from the "A" in the text "Anne Charles" is not visible any more. Thus

    Anne Charles, Hillroad 14, 7766 MyTown, My Country
    Steve Jones, Forestroad 12, 7766 MyTown, My Country

is visible and the node structure is hidden.

Question: How can I ensure that the node "Anne Charles" is visible and also the horizontal scrollbar is aligned to the left, which means that the node structure left from the text is still visible?

Best wishes

[Visual Basic .net 2005]
Question by:mp45
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
LVL 86

Accepted Solution

Mike Tomlinson earned 400 total points
ID: 24035235
Use the SetScrollInfo() API like this:
Public Class Form1
    Private Const SB_VERT As Integer = 1
    Private Const SB_HORZ As Integer = 0
    Private Const SIF_PAGE As Integer = &H2
    Private Const SIF_POS As Integer = &H4
    Private Const SIF_RANGE As Integer = &H1
    Private Const SIF_TRACKPOS As Integer = &H10
    Private Const SIF_ALL As Integer = _
    Private Structure SCROLLINFO
        Public cbSize As Integer
        Public fMask As Integer
        Public nMin As Integer
        Public nMax As Integer
        Public nPage As Integer
        Public nPos As Integer
        Public nTrackPos As Integer
    End Structure
    Private Declare Function SetScrollInfo Lib "user32" _
        (ByVal hWnd As IntPtr, ByVal n As Integer, _
        ByRef lpcScrollInfo As SCROLLINFO, ByVal bool As Boolean) As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sci As SCROLLINFO
        sci.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(sci)
        sci.fMask = SIF_ALL
        sci.nPos = 0 ' <--- this makes it go all the way to the left
        SetScrollInfo(treeViewM.Handle, SB_HORZ, sci, True)
    End Sub
End Class

Open in new window


Author Comment

ID: 24086528

Does it mean there does not exist a solution within the .net-framework, e.g. a treeview method I just have not realized yet?

LVL 86

Expert Comment

by:Mike Tomlinson
ID: 24087803
No...I didn't see anyway to do it via built-in methods...
(hopefully I didn't miss it too!)

Author Comment

ID: 24088276
thanks a lot.
I've found this solution in addition:

LVL 86

Expert Comment

by:Mike Tomlinson
ID: 24088676 essentially the same approach but with a different API.  =)

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below.…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question