2010-04-03 44 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 

。最安全的方法是反過來使用索引,以便位置不受影響。