Click here to Skip to main content
15,889,462 members
Home / Discussions / Visual Basic
   

Visual Basic

 
RantRe: Open / Display SVG images within Visual Basic 6 Pin
Richard Deeming28-Sep-18 4:38
mveRichard Deeming28-Sep-18 4:38 
GeneralRe: Open / Display SVG images within Visual Basic 6 Pin
Darrell Hagan 202113-Jun-21 12:53
Darrell Hagan 202113-Jun-21 12:53 
QuestionCould someone explain why For Each and For Next loops behave differently with lists? Pin
MattiasW768-Sep-18 14:13
MattiasW768-Sep-18 14:13 
AnswerRe: Could someone explain why For Each and For Next loops behave differently with lists? Pin
Eddy Vluggen8-Sep-18 23:51
professionalEddy Vluggen8-Sep-18 23:51 
QuestionRe: Could someone explain why For Each and For Next loops behave differently with lists? Pin
MattiasW769-Sep-18 1:04
MattiasW769-Sep-18 1:04 
AnswerRe: Could someone explain why For Each and For Next loops behave differently with lists? Pin
Eddy Vluggen9-Sep-18 2:11
professionalEddy Vluggen9-Sep-18 2:11 
GeneralRe: Could someone explain why For Each and For Next loops behave differently with lists? Pin
MattiasW7620-Sep-18 9:09
MattiasW7620-Sep-18 9:09 
AnswerRe: Could someone explain why For Each and For Next loops behave differently with lists? Pin
Dave Kreskowiak9-Sep-18 4:54
mveDave Kreskowiak9-Sep-18 4:54 
The problem is that you're using the With statement.

With gets you a reference to an object instance. If you try to replace that object instance with a new one, like you're doing in your For loops, the With is still looking at the original object instance, NOT THE NEW ONE.

Remove the With statements and fully qualify all of your object property references and watch what happens:
VB.NET
    Sub TestForLoop()
        ' Declare a list of rectangles and add 2 rectangles to it
        Dim lstRectangles As New List(Of Rectangle)
        lstRectangles.Add(New Rectangle(100, 200, 1000, 2000))
        lstRectangles.Add(New Rectangle(500, 700, 1500, 2000))

        ' This is the number used to scale the rectangle
        Dim gScale As Single = 0.1

        ' Before doing changes, write the rectangles dimensions to debug window.
        ShowRectDimensions("Before scaling:               ", lstRectangles)
        Debug.WriteLine("")

        ' Jump thru the elements, update and scale each rectangles dimensions. 
        For Each rect As Rectangle In lstRectangles
            rect = New Rectangle(CInt(rect.Left * gScale), CInt(rect.Top * gScale),
                                 CInt(rect.Width * gScale), CInt(rect.Height * gScale))
            ' Write the changes to debug window while looping thru the list.
            Debug.WriteLine("Result inside For Each Loop:  {0}x{1},{2}x{3}", rect.Left, rect.Top, rect.Width, rect.Height)
        Next

        ' After the loop, write the rectangles dimensions to debug window once again.
        ShowRectDimensions("Result outside For Each Loop: ", lstRectangles)
        Debug.WriteLine("")


        ' Go thru the list, update and scale each rectangles dimension. 
        For i As Integer = 0 To lstRectangles.Count - 1
            Dim rect As Rectangle = lstRectangles(i)
            lstRectangles(i) = New Rectangle(CInt(rect.Left * gScale), CInt(rect.Top * gScale),
                                                 CInt(rect.Width * gScale), CInt(rect.Height * gScale))
            ' Write the changes to debug window while looping thru the list.
            Debug.WriteLine("Result inside For Next Loop:  {0}x{1},{2}x{3}", lstRectangles(i).Left, lstRectangles(i).Top, lstRectangles(i).Width, lstRectangles(i).Height)
        Next

        ' After the loop, write the rectangles dimensions to debug window once again.
        ShowRectDimensions("Result outside For Next Loop: ", lstRectangles)
        Debug.WriteLine("")
    End Sub

    ' Created this sub to save some repetition. It writes the dimensions of the rectangles in a list.
    Private Sub ShowRectDimensions(sText As String, ByRef lstRectangles As List(Of Rectangle))
        For i As Integer = 0 To lstRectangles.Count - 1
            With lstRectangles(i)
                Debug.WriteLine("{0}{1}x{2},{3}x{4}", sText, CStr(.Left), CStr(.Top), CStr(.Width), CStr(.Height))
            End With
        Next
    End Sub


GeneralRe: Could someone explain why For Each and For Next loops behave differently with lists? Pin
MattiasW7627-Sep-18 2:59
MattiasW7627-Sep-18 2:59 
QuestionAdding Custom TabPage to TabControl: Closed Pin
mo14927-Sep-18 11:12
mo14927-Sep-18 11:12 
QuestionHow to declare Crypto? Pin
Member 139535037-Sep-18 6:04
Member 139535037-Sep-18 6:04 
AnswerRe: How to declare Crypto? Pin
Richard Deeming7-Sep-18 7:46
mveRichard Deeming7-Sep-18 7:46 
GeneralRe: How to declare Crypto? Pin
Member 1395350314-Sep-18 3:19
Member 1395350314-Sep-18 3:19 
QuestionCurrency textbox Pin
Member 139744835-Sep-18 16:08
Member 139744835-Sep-18 16:08 
AnswerRe: Currency textbox Pin
Mycroft Holmes5-Sep-18 18:34
professionalMycroft Holmes5-Sep-18 18:34 
AnswerRe: Currency textbox Pin
dan!sh 5-Sep-18 19:56
professional dan!sh 5-Sep-18 19:56 
Questionwindows version in vb.net Pin
JR2123-Sep-18 0:20
JR2123-Sep-18 0:20 
AnswerRe: windows version in vb.net Pin
Eddy Vluggen3-Sep-18 1:45
professionalEddy Vluggen3-Sep-18 1:45 
AnswerRe: windows version in vb.net Pin
Dave Kreskowiak3-Sep-18 13:31
mveDave Kreskowiak3-Sep-18 13:31 
QuestionHow to multi Highlight text different 2 textbox in datagridview VB.net? Pin
CodieCalm2-Sep-18 22:26
CodieCalm2-Sep-18 22:26 
QuestionCount char in string? Pin
Member 1395409621-Aug-18 22:43
Member 1395409621-Aug-18 22:43 
AnswerRe: Count char in string? Pin
Jochen Arndt21-Aug-18 23:32
professionalJochen Arndt21-Aug-18 23:32 
GeneralRe: Count char in string? Pin
Chris Quinn22-Aug-18 4:23
Chris Quinn22-Aug-18 4:23 
GeneralRe: Count char in string? Pin
Jochen Arndt22-Aug-18 5:08
professionalJochen Arndt22-Aug-18 5:08 
GeneralRe: Count char in string? Pin
Richard Deeming22-Aug-18 8:58
mveRichard Deeming22-Aug-18 8:58 

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.