Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 4
Application Class
Application Methods
 DoEvents Method
Collapse All/Expand All Collapse All
.NET Framework Class Library
Application..::.DoEvents Method

Processes all Windows messages currently in the message queue.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
Visual Basic
Public Shared Sub DoEvents
C#
public static void DoEvents()
Visual C++
public:
static void DoEvents()
F#
static member DoEvents : unit -> unit 

When you run a Windows Form, it creates the new form, which then waits for events to handle. Each time the form handles an event, it processes all the code associated with that event. All other events wait in the queue. While your code handles the event, your application does not respond. For example, the window does not repaint if another window is dragged on top.

If you call DoEvents in your code, your application can handle the other events. For example, if you have a form that adds data to a ListBox and add DoEvents to your code, your form repaints when another window is dragged over it. If you remove DoEvents from your code, your form will not repaint until the click event handler of the button is finished executing. For more information on messaging, see User Input in Windows Forms.

Unlike Visual Basic 6.0, the DoEvents method does not call the Thread..::.Sleep method.

Typically, you use this method in a loop to process messages.

Caution noteCaution

Calling this method causes the current thread to be suspended while all waiting window messages are processed. If a message causes an event to be triggered, then other areas of your application code may execute. This can cause your application to exhibit unexpected behaviors that are difficult to debug. If you perform operations or computations that take a long time, it is often preferable to perform those operations on a new thread. For more information about asynchronous programming, see Asynchronous Programming Overview.

The following code example demonstrates using the DoEvents method. When the example runs, a user can select graphics files from an OpenFileDialog. The selected files are displayed in the form. The DoEvents method forces a repaint of the form for each graphics file opened. To run this example, paste the following code in a form containing a PictureBox named PictureBox1, an OpenFileDialog named OpenFileDialog1, and a button named fileButton. Call the InitializePictureBox and InitializeOpenFileDialog methods from the form's constructor or Load method.

NoteNote

In Visual Studio, if you add an OpenFileDialog to your form by using a drag operation, you will have to modify the following InitializeOpenFileDialog method by removing the line that creates a new instance of OpenFileDialog.

The example also requires that the Control..::.Click event of the Button control and the FileOk event of the OpenFileDialog are connected to the event handlers defined in the example. When the example is running, display the dialog box by clicking the button.

Visual Basic
    Private Sub InitializePictureBox()
        Me.PictureBox1 = New System.Windows.Forms.PictureBox
        Me.PictureBox1.BorderStyle = _
            System.Windows.Forms.BorderStyle.FixedSingle
        Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
        Me.PictureBox1.Location = New System.Drawing.Point(72, 112)
        Me.PictureBox1.Name = "PictureBox1"
        Me.PictureBox1.Size = New System.Drawing.Size(160, 136)
        Me.PictureBox1.TabStop = False
    End Sub

    Private Sub InitializeOpenFileDialog()
        Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog

        ' Set the file dialog to filter for graphics files.
        Me.OpenFileDialog1.Filter = _
        "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"

        ' Allow the user to select multiple images.
        Me.OpenFileDialog1.Multiselect = True
        Me.OpenFileDialog1.Title = "My Image Browser"
    End Sub

    Private Sub fileButton_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles FileButton.Click
        OpenFileDialog1.ShowDialog()
    End Sub


    ' This method handles the FileOK event.  It opens each file 
    ' selected and loads the image from a stream into PictureBox1.
    Private Sub OpenFileDialog1_FileOk(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) _
     Handles OpenFileDialog1.FileOk

        Me.Activate()
        Dim file, files() As String
        files = OpenFileDialog1.FileNames

        ' Open each file and display the image in PictureBox1.
        ' Call Application.DoEvents to force a repaint after each
        ' file is read.        
        For Each file In files
            Dim fileInfo As System.IO.FileInfo = New System.IO.FileInfo(file)
            Dim fileStream As System.IO.FileStream = fileInfo.OpenRead()
            PictureBox1.Image = System.Drawing.Image.FromStream(fileStream)
            Application.DoEvents()
            fileStream.Close()

            ' Call Sleep so the picture is briefly displayed, 
            'which will create a slide-show effect.
            System.Threading.Thread.Sleep(2000)
        Next
        PictureBox1.Image = Nothing
    End Sub

C#
    private void InitializePictureBox()
    {
        this.pictureBox1 = new System.Windows.Forms.PictureBox();
        this.pictureBox1.BorderStyle = 
            System.Windows.Forms.BorderStyle.FixedSingle;
        this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        this.pictureBox1.Location = new System.Drawing.Point(72, 112);
        this.pictureBox1.Name = "pictureBox1";
        this.pictureBox1.Size = new System.Drawing.Size(160, 136);
        this.pictureBox1.TabIndex = 6;
        this.pictureBox1.TabStop = false;
    }

    private void InitializeOpenFileDialog()
    {
        this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();

        // Set the file dialog to filter for graphics files.
        this.openFileDialog1.Filter = 
            "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + 
            "All files (*.*)|*.*";

        // Allow the user to select multiple images.
        this.openFileDialog1.Multiselect = true;
        this.openFileDialog1.Title = "My Image Browser";
        
    }

    private void fileButton_Click(System.Object sender, System.EventArgs e)
    {
        openFileDialog1.ShowDialog();
    }


    // This method handles the FileOK event.  It opens each file 
    // selected and loads the image from a stream into pictureBox1.
    private void openFileDialog1_FileOk(object sender, 
        System.ComponentModel.CancelEventArgs e)
    {

        this.Activate();
         string[] files = openFileDialog1.FileNames;

        // Open each file and display the image in pictureBox1.
        // Call Application.DoEvents to force a repaint after each
        // file is read.        
        foreach (string file in files )
        {
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);
            System.IO.FileStream fileStream = fileInfo.OpenRead();
            pictureBox1.Image = System.Drawing.Image.FromStream(fileStream);
            Application.DoEvents();
            fileStream.Close();

            // Call Sleep so the picture is briefly displayed, 
            //which will create a slide-show effect.
            System.Threading.Thread.Sleep(2000);
        }
        pictureBox1.Image = null;
    }
Visual C++
void InitializePictureBox()
{
   this->PictureBox1 = gcnew System::Windows::Forms::PictureBox;
   this->PictureBox1->BorderStyle =
      System::Windows::Forms::BorderStyle::FixedSingle;
   this->PictureBox1->SizeMode = PictureBoxSizeMode::StretchImage;
   this->PictureBox1->Location = System::Drawing::Point( 72, 112 );
   this->PictureBox1->Name = "PictureBox1";
   this->PictureBox1->Size = System::Drawing::Size( 160, 136 );
   this->PictureBox1->TabIndex = 6;
   this->PictureBox1->TabStop = false;
}

void InitializeOpenFileDialog()
{
   this->OpenFileDialog1 = gcnew System::Windows::Forms::OpenFileDialog;

   // Set the file dialog to filter for graphics files.
   this->OpenFileDialog1->Filter =
      "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" +
      "All files (*.*)|*.*";

   // Allow the user to select multiple images.
   this->OpenFileDialog1->Multiselect = true;
   this->OpenFileDialog1->Title = "My Image Browser";
}

void fileButton_Click( System::Object^ sender, System::EventArgs^ e )
{
   OpenFileDialog1->ShowDialog();
}

// This method handles the FileOK event.  It opens each file 
// selected and loads the image from a stream into PictureBox1.
void OpenFileDialog1_FileOk( Object^ sender,
   System::ComponentModel::CancelEventArgs^ e )
{
   this->Activate();
   array<String^>^ files = OpenFileDialog1->FileNames;

   // Open each file and display the image in PictureBox1.
   // Call Application.DoEvents to force a repaint after each
   // file is read.        
   for each ( String^ file in files )
   {
      System::IO::FileInfo^ fileInfo = gcnew System::IO::FileInfo( file );
      System::IO::FileStream^ fileStream = fileInfo->OpenRead();
      PictureBox1->Image = System::Drawing::Image::FromStream( fileStream );
      Application::DoEvents();
      fileStream->Close();

      // Call Sleep so the picture is briefly displayed, 
      //which will create a slide-show effect.
      System::Threading::Thread::Sleep( 2000 );
   }
   PictureBox1->Image = nullptr;
}
Metadata

To run this example paste the following code in a form containing
a PictureBox named PictureBox1, an OpenFileDialog named OpenFileDialog1, 
and a button named fileButton.  Call the InitializePictureBox and 
InitializeOpenFileDialog methods from the form's constructor or 
Load method. When the example is running, display the dialog by clicking
the button.    

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Similar explanation needed for PictureBox      Toddintr   |   Edit   |   Show History
This page currently has the following explanation:

In Visual Studio, if you add an OpenFileDialog to your form by using a drag operation, you will have to modify the following InitializeOpenFileDialog method by removing the line that creates a new instance of OpenFileDialog.

A similar explanation is needed for the InitializePictureBox method to remove the first line that creates a new instance of PictureBox. Otherwise the initialization, even if called from the Load method of the form, does not work and the example code does not function as intended because a) the PictureBox border is not painted, and b) the slideshow effect is not achieved because it is impossible to select multiple images in the OpenFileDialog.

What the caution means      dbasnett   |   Edit   |   Show History
This bit of code illustrates why using .DoEvents may produce undesired results.  In this example the .DoEvents is used to update the textbox.
Run the code and press enter.  Wait for the count to reach 10,000.  Press enter again to clear the count.

Then press enter several times quickly.  The count is not likely to be 10,000.

Public Class Form1

    'requires two buttons and a textbox

    Const tries As Integer = 10000
    Dim counter As Integer

    Private Sub Button1_Click(sender As System.Object, _
                              e As System.EventArgs) Handles Button1.Click
        Button2.Select()
        For x As Integer = 1 To tries
            counter += 1
            TextBox1.Text = counter.ToString("n0")
            Application.DoEvents() 'used to update UI :( TextBox1.Refresh would be better
        Next
    End Sub

    Private Sub Button2_Click(sender As System.Object, _
                              e As System.EventArgs) Handles Button2.Click
        'reset counter
        counter = 0
        TextBox1.Text = ""
        Button1.Select()
    End Sub

    Private Sub Form1_Shown(sender As Object, _
                            e As System.EventArgs) Handles Me.Shown
        Button1.Select()
    End Sub
End Class

Tags What's this?: Add a tag
Flag as ContentBug
What the caution means      dbasnett   |   Edit   |   Show History
dup removed
Tags What's this?: Add a tag
Flag as ContentBug
Not working      krnr ... andrew10042   |   Edit   |   Show History
$0QUESTION:$0 The code runs OK. But I don't see any images in the picturebox. $0 $0$0 $0 $0ANSWER:$0 $0You need to add this line to InitializeOpenFileDialog()$0 $0this.openFileDialog1.FileOk += openFileDialog1_FileOk;$0 $0Speak english?$0
Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker