Solved

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

Posted on 2009-03-31
5
452 Views
Last Modified: 2012-05-06
Hi,

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

    Me.treeViewM.Nodes(0).Nodes(0).Nodes(0).EnsureVisible()

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
Michael

[Visual Basic .net 2005]
0
Comment
Question by:mp45
  • 3
  • 2
5 Comments
 
LVL 85

Accepted Solution

by:
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 = _

        (SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS)
 

    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

        Me.treeViewM.Nodes(0).Nodes(0).Nodes(0).EnsureVisible()
 

        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

0
 

Author Comment

by:mp45
ID: 24086528
thanks.

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

Michael
0
 
LVL 85

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!)
0
 

Author Comment

by:mp45
ID: 24088276
thanks a lot.
I've found this solution in addition:
http://www.codeproject.com/KB/tree/NoScrollingTree.aspx

Michael
0
 
LVL 85

Expert Comment

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

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

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…
Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

746 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now