Solved

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

Posted on 2009-03-31
5
463 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
[X]
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
5 Comments
 
LVL 86

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

Expert Comment

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

Featured Post

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

Question has a verified solution.

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

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
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 a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

728 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