Click here to Skip to main content
16,016,580 members
Home / Discussions / Visual Basic
   

Visual Basic

 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten2-Jul-12 20:36
Nick Otten2-Jul-12 20:36 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad2-Jul-12 23:57
Ammar_Ahmad2-Jul-12 23:57 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten3-Jul-12 0:16
Nick Otten3-Jul-12 0:16 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad3-Jul-12 13:36
Ammar_Ahmad3-Jul-12 13:36 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten4-Jul-12 1:01
Nick Otten4-Jul-12 1:01 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad6-Jul-12 13:24
Ammar_Ahmad6-Jul-12 13:24 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten8-Jul-12 20:38
Nick Otten8-Jul-12 20:38 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad10-Jul-12 2:32
Ammar_Ahmad10-Jul-12 2:32 
so all the code needs to be same. but what should I do with:
maxscroll = index - 18 ?
the index property was giving an error in flowlayoutpanel. can you give me the example on the same code
or better on the project its self.. :

VB
Imports System.Runtime.InteropServices
 
Public Class Form1
    Dim WithEvents scrollhandler As MyListener 'class that will watch windows to see if your scrolling
    Private scrolled As Boolean = False 'boolean you can use to flip if a message box was displayed or not...(so it wont loop the messagebox.show)
    Private maxscroll As Int64 'int used to store the max value of the scrollbar
    'dll used to get the scrollbar value NOTE: if the scrollbar is not visible or you go higher then your max it will crash!
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Public Shared Function GetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer) As Integer
    End Function
 
    'dll used to set the scrollbar value NOTE: if the scrollbar is not visible or you go higher then your max it will crash!
    <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
 

    Public Property HScrollPos() As Integer 'property to set or get the horisontal scrollbar value
        Get
            Return GetScrollPos(DirectCast(txtscroll.Handle, IntPtr), SB_HORZ) 'change txtscroll to the control you use. dont forget the .handle
        End Get
        Set(ByVal value As Integer)
            SetScrollPos(DirectCast(txtscroll.Handle, IntPtr), SB_HORZ, value, True) 'change txtscroll to the control you use. dont forget the .handle
        End Set
    End Property
 

    Public Property VScrollPos() As Integer 'Property to set or get the Vertical scrollbar value
        Get
            Return GetScrollPos(DirectCast(txtscroll.Handle, IntPtr), SB_VERT) 'change txtscroll to the control you use. dont forget the .handle
        End Get
        Set(ByVal value As Integer)
            SetScrollPos(DirectCast(txtscroll.Handle, IntPtr), SB_VERT, value, True) 'change txtscroll to the control you use. dont forget the .handle
        End Set
    End Property
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'some random loop i used to ditch some data in my listbox for testing
        Dim index As Int32 = 0
        Do While index < 1000
            txtscroll.Items.Add(index.ToString())
            index += 1
        Loop
        maxscroll = index - 18 'calculate max value. everytime you add a item you have to do this again. to calculate this its a bit of a trail and error thing depending on your control
        'attach your scrollwatcher to your control. in my case i have a listbox called "txtscroll")
        scrollhandler = New MyListener(txtscroll)
 
    End Sub
 
    Private Sub scrollhandler_MyScroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles scrollhandler.MyScroll
        If VScrollPos = maxscroll And scrolled Then 'the scrollbar is down and no message was given, showing a messagebox
            MessageBox.Show("you reached the max on the verticle scrollbar!", "yay")
            scrolled = False 'messagebox was shown, flip bool to prevent loop
        ElseIf VScrollPos < maxscroll Then
            scrolled = True 'the scroll value is smaller then the maximum scroll value. meaning the next time the bar hits the bottem a new textbox should be shown
        End If
    End Sub
 
    Private Sub txtscroll_MouseWheelScroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtscroll.MouseWheel
        scrollhandler_MyScroll(e, e) 'needed to catch the scrollwheel event.
    End Sub
 

    Private Class MyListener
        Inherits NativeWindow
 
        Public Event MyScroll(ByVal sender As Object, ByVal e As EventArgs)
        Const WM_MOUSEACTIVATE = &H21
        Const WM_MOUSEMOVE = &H200
        Private control As Control
 
        Public Sub New(ByVal control As Control)
            AssignHandle(control.Handle) 'docks handler to given control
        End Sub
 
        Protected Overrides Sub WndProc(ByRef Messageevent As Message)
            Const WM_HSCROLL = &H114
            Const WM_VSCROLL = &H115
            If Messageevent.Msg = WM_HSCROLL Or Messageevent.Msg = WM_VSCROLL Then 'looks if the horisontal or verticle scrollbar is moving
                'one of the scrollbars is moving, throw event
                RaiseEvent MyScroll(control, New EventArgs)
            End If
            MyBase.WndProc(Messageevent)
        End Sub
 
        Protected Overrides Sub Finalize()
            'not used in example but drops the scroll watcher
            ReleaseHandle()
            MyBase.Finalize()
        End Sub
 
    End Class
 
End Class

GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten10-Jul-12 3:13
Nick Otten10-Jul-12 3:13 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad10-Jul-12 15:15
Ammar_Ahmad10-Jul-12 15:15 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten10-Jul-12 20:41
Nick Otten10-Jul-12 20:41 
AnswerRe: Event on Scrolling to the end in flowlayoutpanel Pin
Luc Pattyn29-Jun-12 2:56
sitebuilderLuc Pattyn29-Jun-12 2:56 
JokeRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten29-Jun-12 3:01
Nick Otten29-Jun-12 3:01 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Luc Pattyn29-Jun-12 4:19
sitebuilderLuc Pattyn29-Jun-12 4:19 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten29-Jun-12 4:31
Nick Otten29-Jun-12 4:31 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad29-Jun-12 8:28
Ammar_Ahmad29-Jun-12 8:28 
AnswerRe: Event on Scrolling to the end in flowlayoutpanel Pin
Luc Pattyn29-Jun-12 9:00
sitebuilderLuc Pattyn29-Jun-12 9:00 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad30-Jun-12 0:08
Ammar_Ahmad30-Jun-12 0:08 
QuestionHelp for FTP client upload Pin
mikrophun27-Jun-12 21:01
mikrophun27-Jun-12 21:01 
AnswerRe: Help for FTP client upload Pin
Bernhard Hiller27-Jun-12 21:37
Bernhard Hiller27-Jun-12 21:37 
GeneralRe: Help for FTP client upload Pin
mikrophun27-Jun-12 21:42
mikrophun27-Jun-12 21:42 
GeneralRe: Help for FTP client upload Pin
mikrophun27-Jun-12 22:27
mikrophun27-Jun-12 22:27 
AnswerRe: Help for FTP client upload Pin
Eddy Vluggen28-Jun-12 1:55
professionalEddy Vluggen28-Jun-12 1:55 
AnswerRe: Help for FTP client upload Pin
mikrophun28-Jun-12 17:40
mikrophun28-Jun-12 17:40 
QuestionBasic program, very basic code, but still error, why!. [rich text box] Pin
Student1023027-Jun-12 20:55
Student1023027-Jun-12 20:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.