2014-02-12 3 views
0

텍스트 파일을 읽는 프로그램을 만든 다음 텍스트의 각 문자를 레이블로 변환합니다. 텍스트 파일이 너무 많아 프로그램이 뒤쳐 지거나 레이블이 표시되지 않거나 너무 오래로드 된 것 같습니다. 그것을 더 빨리 만들거나 지연을 피할 수있는 방법이 있습니까?vb가 너무 많은 양의 레이블 때문에 지연됩니다.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    'Drawing() 

    Dim fileReader As String 
    fileReader = My.Computer.FileSystem.ReadAllText(TextBox1.Text) 
    RichTextBox1.Text = fileReader 
    'MsgBox(fileReader) 

End Sub 

Private Sub Drawing() 
    Dim i, x, y As Integer 
    y = 0 
    x = 0 
    For i = 0 To RichTextBox1.TextLength - 1 
     If RichTextBox1.Text.Chars(i) = Convert.ToChar(&HA) Then 
      y = y + 16 
      x = 0 
     Else 
      Dim lbl As New Label 
      lbl.Name = "lbl" 
      lbl.Size = New System.Drawing.Size(15, 15) 'set your size (if required) 
      lbl.Text = RichTextBox1.Text.Chars(i) 'set the text for your label 

      lbl.Location = New System.Drawing.Point(x, y) 'set your location 
      ToolTip1.SetToolTip(lbl, lbl.Text) 
      lbl.BackColor = Color.Red 
      Panel1.Controls.Add(lbl) 'add your new control to your forms control collection 
      x = x + 16 
     End If 
    Next 

End Sub 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    Panel1.Width = Panel1.Width + 10 
    Panel1.Height = Panel1.Height + 10 
End Sub 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
    Panel1.Width = Panel1.Width - 10 
    Panel1.Height = Panel1.Height - 10 
End Sub 

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 
    Dim dialog As New OpenFileDialog() 
    If DialogResult.OK = dialog.ShowDialog Then 
     TextBox1.Text = dialog.FileName 
    End If 
End Sub 

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 
    Drawing() 
End Sub 

최종 클래스

답변

0

난 정말 당신이하려고하지만 프로세스가 완료 될 때까지 레이아웃을 일시 중단 할 수 있습니다 무엇을 이해하지 않습니다. 이렇게하면 모든 레이블을 추가하는 동안 UI 또는 양식을 업데이트하지 않고 도면을 완료합니다. 레이블이로드되면 전체 패스를 단일 패스로 그릴 수 있습니다.

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 
    Me.SuspendLayout() 
    Drawing() 
    Me.ResumeLayout(True) 
End Sub 
+0

여러 라벨을 만들려고합니다. 그것은 적어도 1000 라벨을 생산에 작동하는 것하지만 난 5000-1000 라벨을 만들어야 나에게 오류가 발생합니다. – user3299825

관련 문제