Solved

Add Progress bar to my Winform (VB.NET 2003)

Posted on 2010-11-16
8
980 Views
Last Modified: 2012-05-10
Hi Experts,

I have a simple Winform with a Listbox & RichTextBox. The Listbox loads RTF files from DIR into Listbox names... If I click on ListboxItem... it loads contents of that file into the RichTextBox.

Because the RFT files are located on a server, some of the files are 11mb.... & this takes time to streamread it into the RichTextBox... I would like to know how to add a progress bar to show loading progress.

Thanks,
Rob
Option Explicit On 
Imports System.IO
Imports System.Threading
Imports System.Diagnostics

Public Class Form1
    Inherits System.Windows.Forms.Form

Dim aDate As Date
Dim dateString As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        LoadFiles()
        Try
            ' folder exists
            Dim path As String
            Dim di As System.IO.DirectoryInfo

            path = "\\server\share\folderA\"
            di = New System.IO.DirectoryInfo(path)

            If (Not di.Exists) Then
                di.Create()
            End If
        Catch ex As Exception
            MsgBox("Error code 22: The Dir doesn't exist!")
        End Try
        Label3.Text = ListBox1.Items.Count.ToString()
    End Sub

    Private Sub LoadFiles()
        Try
            Dim sourceFolder As String = "\\server\share\folderA\"
            ListBox1.BeginUpdate()
            ListBox1.Items.Clear()
            ListBox1.Items.AddRange((New System.IO.DirectoryInfo(sourceFolder)).GetFiles("*.rtf"))
            ListBox1.EndUpdate()
        Catch ex As Exception
            MsgBox("Error!")
        End Try

    End Sub

Private Sub LoadFiles()
        Try
            Dim sourceFolder As String = "\\server\share\folderA\"
            ListBox1.BeginUpdate()
            ListBox1.Items.Clear()
            ListBox1.Items.AddRange((New System.IO.DirectoryInfo(sourceFolder)).GetFiles("*.rtf"))
            ListBox1.EndUpdate()
        Catch ex As Exception
            MsgBox("Error code 45: The repository is empty!")
        End Try

    End Sub

 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        
	dateString = aDate.Now.ToString("ddMMyyyy")
        Try
            If Not (ListBox1.SelectedItem Is Nothing) Then
                RichTextBox1.Rtf = CType(ListBox1.SelectedItem, System.IO.FileInfo).OpenText.ReadToEnd
            End If
            
            Dim filename As String = IO.Path.GetFileNameWithoutExtension(ListBox1.Text)
            Label1.Text = filename

        Catch ex As Exception
            MsgBox("Error!")
        End Try
     End Sub

Open in new window

0
Comment
Question by:RobertoFreemano
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +2
8 Comments
 
LVL 17

Accepted Solution

by:
Zhaolai earned 500 total points
ID: 34146989
Don't think you can use progressbar unless you load the file line by line. But you can add a busy cursor in the process, like this:

Try
            Cursor.Current = Cursors.WaitCursor
            If Not (ListBox1.SelectedItem Is Nothing) Then
                RichTextBox1.Rtf = CType(ListBox1.SelectedItem, System.IO.FileInfo).OpenText.ReadToEnd
            End If
            
            Dim filename As String = IO.Path.GetFileNameWithoutExtension(ListBox1.Text)
            Label1.Text = filename

        Catch ex As Exception
            MsgBox("Error!")
        Finally
            Cursor.Current = Cursors.Default
        End Try

Open in new window

0
 
LVL 38

Expert Comment

by:Tom Beck
ID: 34147889
Perhaps this thread can help you. I answered a similar question recently by suggesting the use of the BackgroundWorker class to accomplish the same thing. Note that a single thread cannot both download the file and update a progress bar, hence the need for one thread to handle the download and the main thread for the progress bar.

http://www.experts-exchange.com/Programming/Languages/.NET/Visual_CPP/Q_26569623.html
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 34150471
To be able to show progress while reading a file, you need to read the file in chunks.

The other option is to use a Marquee type progressbar then you would have to load the file in a separate thread so that the UI thread can paint the progressbar.
0
Major Incident Management Communications

Major incidents and IT service outages cost companies millions. Often the solution to minimizing damage is automated communication. Find out more in our Major Incident Management Communications infographic.

 
LVL 86

Expert Comment

by:Mike Tomlinson
ID: 34150815
He's working in VB.Net 2003 so the BackgroundWorker and Marquee style ProgressBar are out...   =\
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 34150888
Yeah but he can use threads and a custom progressbar.
0
 
LVL 38

Expert Comment

by:Tom Beck
ID: 34151912
@Idle_Mind,
Why do you say BackgroundWorker not an option for VS 2003? I use VS 2003 and the BackgroundWorker class.
0
 
LVL 86

Expert Comment

by:Mike Tomlinson
ID: 34151947
...because it wasn't added until .Net 2.0 in VS2005:
http://msdn.microsoft.com/en-us/library/35f2fe4h.aspx
http://msdn.microsoft.com/en-us/library/t357fb32.aspx

Not sure what you're using in 2003?!...
0
 

Author Closing Comment

by:RobertoFreemano
ID: 34154621
Zhaolai,
Your "Cursor.Current = Cursors.WaitCursor" seems to work for me...

Thanks ;)
0

Featured Post

Revamp Your Training Process

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question