Application.DoEvents メソッド
メッセージ キューに現在ある Windows メッセージをすべて処理します。
Public Shared Sub DoEvents()
[C#]
public static void DoEvents();
[C++]
public: static void DoEvents();
[JScript]
public static function DoEvents();
解説
Windows フォームを実行すると、新しいフォームが作成され、フォームはイベントが処理されるまで待機します。フォームがイベントを処理するたびに、イベントに関連付けられたコードがすべて処理されます。その他のイベントはすべてキュー内で待機します。コードでイベントを処理している間は、アプリケーションによる応答はありません。たとえば、ウィンドウを別のウィンドウの上にドラッグする場合は、ウィンドウは再描画されません。
コード内で DoEvents を呼び出すと、アプリケーションで他のイベントを処理できます。たとえば、データを ListBox に追加するフォームの場合、 DoEvents をコードに追加すると、フォームに別のウィンドウをドラッグした場合にフォームは再描画されます。コードから DoEvents を削除した場合は、ボタンの Click イベント ハンドラが実行を完了するまでフォームは再描画されません。
通常は、ループでこのメソッドを使用してメッセージを処理します。
注意 このメソッドを呼び出すと、メッセージがイベントを発生させた場合に、コードへの再入力が発生する可能性があります。
使用例
[Visual Basic, C#] FileOk イベントの処理方法と Application.DoEvents メソッドの使用方法の例を次に示します。このコードを実行すると、ユーザーは OpenFileDialog オブジェクトからグラフィックス ファイルを選択できます。選択したファイルはフォームに表示されます。 DoEvents メソッドの働きにより、フォームは開かれるグラフィックス ファイルごとに再描画されます。このコードを実行するには、PictureBox1 という名前の PictureBox オブジェクト、OpenFileDialog1 という名前の OpenFileDialog オブジェクト、および fileButton という名前のボタンを格納するフォームにこのコードを貼り付けます。さらに、フォームのコンストラクタまたは Load メソッドから、InitializePictureBox メソッドと InitializeOpenFileDialog メソッドを呼び出します。また、この例は、Button コントロールの Click イベントと OpenFileDialog の FileOK イベントが、このコードで定義されているイベント処理メソッドに関連付けられていることを前提にしています。なお、このコードを実行しているとき、ダイアログを表示するにはボタンをクリックします。
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;
}
[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
Application クラス | Application メンバ | System.Windows.Forms 名前空間 | Exit | ExitThread | Run