(0) exportieren Drucken
Alle erweitern

Application.DoEvents-Methode

Verarbeitet alle Windows-Meldungen, die sich derzeit in der Meldungswarteschlange befinden.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

public static void DoEvents ()
public static void DoEvents ()
public static function DoEvents ()

Wenn Sie ein Windows Form ausführen, wird ein neues Formular erstellt, das dann auf zu behandelnde Ereignisse wartet. Immer dann, wenn das Formular ein Ereignis behandelt, wird der gesamte Code verarbeitet, der dem Ereignis zugeordnet ist. Alle anderen Ereignisse verbleiben in der Warteschlange. Während der Code das Ereignis behandelt, reagiert die Anwendung nicht. Beispielsweise wird das Fenster nicht neu aufgebaut, wenn ein anderes Fenster darüber gezogen wird.

Wenn Sie im Code DoEvents aufrufen, kann die Anwendung die anderen Ereignisse behandeln. Wenn Sie beispielsweise bei einem Formular, mit dem einer ListBox Daten hinzugefügt werden, dem Code DoEvents hinzufügen, wird das Formular neu aufgebaut, wenn ein anderes Fenster darüber gezogen wird. Wenn Sie DoEvents aus dem Code entfernen, wird das Formular so lange nicht neu aufgebaut, bis der Click-Ereignishandler der Schaltfläche die Ausführung abgeschlossen hat.

Im Gegensatz zu Visual Basic 6.0 ruft die DoEvents-Methode die Thread.Sleep-Methode nicht auf.

Üblicherweise wird diese Methode in einer Warteschleife verwendet, um Meldungen zu verarbeiten.

VorsichtVorsicht

Durch Aufrufen dieser Methode kann Code eventuell erneut durchlaufen werden, wenn eine Meldung ein Ereignis auslöst.

Im folgenden Codebeispiel wird die Verwendung der DoEvents-Methode veranschaulicht. Wenn das Beispiel ausgeführt wird, kann der Benutzer Grafikdateien in einem OpenFileDialog auswählen. Die ausgewählten Dateien werden im Formular angezeigt. Die DoEvents-Methode erzwingt den Neuaufbau des Formulars für jede geöffnete Grafikdatei. Wenn Sie dieses Beispiel ausführen möchten, fügen Sie den folgenden Code in ein Formular ein, das die PictureBox mit dem Namen PictureBox1, das OpenFileDialog mit dem Namen OpenFileDialog1 und eine Schaltfläche mit dem Namen fileButton enthält. Rufen Sie die InitializePictureBox-Methode und die InitializeOpenFileDialog-Methode aus dem Konstruktor oder der Load-Methode auf. Für dieses Beispiel ist es außerdem erforderlich, dass das Control.Click-Ereignis des Button-Steuerelements und das FileOk-Ereignis von OpenFileDialog mit den in dem Beispiel definierten Ereignishandlern verbunden sind. Beim Ausführen des Beispiels können Sie das Dialogfeld durch Klicken auf die Schaltfläche öffnen.

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;
}

private void InitializePictureBox()
{
    this.pictureBox1 = new System.Windows.Forms.PictureBox();
    this.pictureBox1.set_BorderStyle(
        System.Windows.Forms.BorderStyle.FixedSingle);
    this.pictureBox1.set_SizeMode(PictureBoxSizeMode.StretchImage);
    this.pictureBox1.set_Location(new System.Drawing.Point(72, 112));
    this.pictureBox1.set_Name("pictureBox1");
    this.pictureBox1.set_Size(new System.Drawing.Size(160, 136));
    this.pictureBox1.set_TabIndex(6);
    this.pictureBox1.set_TabStop(false);
} //InitializePictureBox

private void InitializeOpenFileDialog()
{
    this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
    // Set the file dialog to filter for graphics files.
    this.openFileDialog1.set_Filter("Images (*.BMP;*.JPG;*.GIF)|" 
        + "*.BMP;*.JPG;*.GIF|All files (*.*)|*.*");
    // Allow the user to select multiple images.
    this.openFileDialog1.set_Multiselect(true);
    this.openFileDialog1.set_Title("My Image Browser");
} //InitializeOpenFileDialog

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

// 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.get_FileNames();
    // Open each file and display the image in pictureBox1.
    // Call Application.DoEvents to force a repaint after each
    // file is read.
    for (int iCtr = 0; iCtr < files.length; iCtr++) {
        String file = files[iCtr];
        System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);
        System.IO.FileStream fileStream = fileInfo.OpenRead();
        pictureBox1.set_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.set_Image(null);
} //openFileDialog1_FileOk

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen:
© 2014 Microsoft