2010-04-03 5 views
1

VB.NET vb 2008 을 사용하고 있습니다. 내가 dynammically 텍스트 상자를 만들고 여기를 제거하기 위해 시도하고 지금까지다이나믹하게 텍스트 상자를 만들고 제거하십시오.

Private Sub setTextBox() 
     Dim num As Integer 
     Dim pos As Integer 

     num = Len(word) 
     temp = String.Copy(word) 
     Dim intcount As Integer 





     remove() 
     GuessBox.Visible = True 
     letters.Visible = True 



     pos = 0 
     'To create the dynamic text box and add the controls 
     For intcount = 0 To num - 1 
      Txtdynamic = New TextBox 
      Txtdynamic.Width = 20 
      Txtdynamic.Visible = True 
      Txtdynamic.MaxLength = 1 
      Txtdynamic.Location = New Point(pos + 5, 0) 
      pos = pos + 30 
      'set the font size 
      Txtdynamic.Font = New System.Drawing.Font("Verdana", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 
      Txtdynamic.Name = "txtdynamic_" & intcount & "_mycntrl" 
      Txtdynamic.Enabled = False 
      Txtdynamic.Text = "" 

      Panel1.Controls.Add(Txtdynamic) 

     Next 
     Panel1.Visible = True 
     Controls.Add(Panel1) 
     Controls.Add(GuessBox) 
     Controls.Add(letters) 
     letter = "" 
     letters.Text = "" 
     hang_lable.Text = "" 

     tries = 0 
    End Sub`enter code here` 



Function remove() 


      For Each ctrl In Panel1.Controls 

      Panel1.Controls.Remove(ctrl) 

     Next 
    End Function 

나는 텍스트 상자를 만들 수 있지만 그 중 몇 가지가 제거 된 수 있어요 내가 작성한 코드입니다. For Each ctrl을 사용하여 Panel1.Controls에서 모든 컨트롤과 일부 ae를 검색하지 않습니다. 난 당신이 각의를 사용하여, 현재 반복되는 루프에서 컬렉션을 변경하지 마십시오 오해하지 않다 경우

답변

0

Sub remove() 
    For i As Integer = Panel1.Controls.Count - 1 To 0 Step -1 
     Panel1.Controls.Remove(Panel1.Controls(i)) 
    Next i 
End Sub 

에 삭제를 변경

. 가장 안전한 방법은 역순으로 인덱스를 사용하여 위치가 영향을받지 않도록하는 것입니다.

관련 문제