Application.DoEvents Application.DoEvents Application.DoEvents Application.DoEvents Method

定義

メッセージ キューに現在ある Windows メッセージをすべて処理します。Processes all Windows messages currently in the message queue.

public:
 static void DoEvents();
public static void DoEvents ();
static member DoEvents : unit -> unit
Public Shared Sub DoEvents ()

次のコード例に示しますを使用して、DoEventsメソッド。The following code example demonstrates using the DoEvents method. ユーザーがからグラフィック ファイルを選択できる例を実行すると、OpenFileDialogします。When the example runs, a user can select graphics files from an OpenFileDialog. 選択したファイルは、フォームに表示されます。The selected files are displayed in the form. DoEventsメソッド強制的に開いている各グラフィックス ファイルのフォームの再描画します。The DoEvents method forces a repaint of the form for each graphics file opened. この例を実行するには、格納しているフォームに次のコードを貼り付け、PictureBoxという名前のPictureBox1OpenFileDialogという名前OpenFileDialog1、という名前のボタンとfileButtonします。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. 呼び出す、InitializePictureBoxInitializeOpenFileDialogフォームのコンス トラクターのメソッドまたはLoadメソッド。Call the InitializePictureBox and InitializeOpenFileDialog methods from the form's constructor or Load method.

注意

追加する場合、Visual Studio で、OpenFileDialogをドラッグ操作を使用してフォームには、次のように変更する必要がInitializeOpenFileDialogメソッドの新しいインスタンスを作成する行を削除することによってOpenFileDialogします。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.

例もする必要があります、Control.Clickのイベント、ButtonコントロールとFileOkのイベント、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.

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.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 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

注釈

Windows フォームを実行するときにイベントを処理するを待機し、新しいフォームを作成します。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.

呼び出す場合DoEventsコードでは、アプリケーションが他のイベントを処理できます。If you call DoEvents in your code, your application can handle the other events. 例では、データを追加するフォームがある場合、ListBox追加DoEvents上にある別のウィンドウがドラッグされると、コードに、フォームを再描画します。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. 削除する場合DoEvents、コードから、フォームが再描画されないボタンの click イベント ハンドラーが完了するまで実行します。If you remove DoEvents from your code, your form will not repaint until the click event handler of the button is finished executing. メッセージングの詳細については、次を参照してください。 Windows フォームでのユーザー入力します。For more information on messaging, see User Input in Windows Forms.

Visual Basic 6.0 とは異なり、DoEventsメソッドは呼び出しません、Thread.Sleepメソッド。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.

注意事項

このメソッドを呼び出すと、現在のスレッドを待機しているウィンドウのすべてのメッセージの処理中に中断するが、します。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. 非同期プログラミングの詳細については、次を参照してください。非同期プログラミング モデル (APM)します。For more information about asynchronous programming, see Asynchronous Programming Model (APM).

適用対象

こちらもご覧ください