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)
Syntax
'Declaration
Public Shared Sub DoEvents
'Usage
Application.DoEvents
public static void DoEvents ()
public:
static void DoEvents ()
public static void DoEvents ()
public static function DoEvents ()
Hinweise
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.
Warnung
Durch Aufrufen dieser Methode kann Code eventuell erneut durchlaufen werden, wenn eine Meldung ein Ereignis auslöst.
Beispiel
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 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
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;
}
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;
}
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
Plattformen
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.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
Application-Klasse
Application-Member
System.Windows.Forms-Namespace
Exit
ExitThread
Run