I have this class that extends a picturebox to be movable at runtime. As an amateur, I didnt write it, just modified code I found at codeproject.
I have a boolean value that I would like to check with an if statement to disable the movability if false.
Being that this class overrides many methods I am not sure how to integrate the if logic into the class. Please advise
Code:Public Class MovablePictureBox Inherits System.Windows.Forms.PictureBox ' Used to store the current cursor shape when we start ' to move the control Private m_CurrentCursor As Cursor ' Holds the mouse position relative to the inside of ' our control when the mouse button goes down Private m_CursorOffset As Point ' Used by the MoveMove event handler to show that the ' setup to move the control has completed Private m_Moving As Boolean Public Sub New() ' Call the constructor of the base picturebox class to properly ' initialize our control MyBase.New() ' Setup the Cursor property so that, by default, when the ' mouse passes over our control, the cursor changes to a hand Me.Cursor = Cursors.Hand End Sub Private Sub MovablePictureBox_MouseDown( _ ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles MyBase.MouseDown ' Check to see if the correct button has been pressed If e.Button = Windows.Forms.MouseButtons.Left Then ' If so, the save the current cursor and m_CurrentCursor = MyBase.Cursor ' replace it with our new image that says were in Movable mode MyBase.Cursor = Cursors.SizeAll ' Save the location of the mouse pointer relative to the top-left ' corner of our control m_CursorOffset = e.Location ' Set the mode flag to signal the MouseMove event handler that it ' needs to now calculate new positions for our control m_Moving = True End If End Sub Private Sub MovablePictureBox_MouseMove( _ ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles MyBase.MouseMove ' Check which mode we're in. If we're supposed to be moving ' our control If m_Moving Then ' get the screen position of the mouse pointer and map it ' to the position relative to the top-left corner of our ' parent container Dim clientPosition As Point = _ MyBase.Parent.PointToClient(System.Windows.Forms.Cursor.Position) ' Calculate the new position of our control, maintaining ' the relative position stored by the MoveDown event Dim adjustedLocation As New Point( _ clientPosition.X - m_CursorOffset.X, _ clientPosition.Y - m_CursorOffset.Y) ' Set the new position of our control MyBase.Location = adjustedLocation End If End Sub Private Sub MovablePictureBox_MouseUp( _ ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles MyBase.MouseUp ' The button was released, so we're going back to Static mode. m_Moving = False ' Restore the cursor image to the way we found it when the mouse ' button was pressed MyBase.Cursor = m_CurrentCursor End Sub End Class





Reply With Quote