C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 113 を表示中)
■66825 / )  フォームで処理中に「処理中・・・」画面を表示したい。
□投稿者/ taka (1回)-(2013/05/29(Wed) 20:50:48)

分類:[VB.NET/VB2005 以降] 

はじめまして
【VisualStudio 2010】
【Windows7】
【Oracle11g】
以上の環境で現在開発しております。

[MainForm]処理を行うメインフォーム
[SubForm]「処理中・・・」を表示するフォーム

あるフォームでデータ表示や計算処理など時間のかかる処理が発生した場合に
「処理中です・・・」と出るような画面を表示したいです。
ただ表示するだけであれば処理直前に「SubForm.Show」でいいのですが
そのときに、「・」を1秒ごとに「・・」⇒「・・・」⇒「・」というように変化させたり
PictureBoxにはめたGifアニメを動かしたいのですが動きません。

教えていただけませんでしょうか?
よろしくお願いします。

以下は簡単な私が作ったサンプルになります。
誤字脱字あった場合は申し訳ございません。
足りない情報があれば追加させていただきます。
'--------------------------------------------------------
Public Class MainForm

Private Sub Button_Click(Byval sender As System.Object, Byval e As System.EventArgs) Handles Button.Click
Dim frm As New SubForm

frm.Show

'=======時間のかかる処理===========
For i As Integer = 0 To 10
System.Threading.Thread.Sleep(1000)
Next i

frm.Close

End Sub

End Class

'--------------------------------------------------------
Public Class SubForm

Private CallBack As New Threading.TimerCallback(AddressOf Thread_A)
Private P_Flg As Boolean = False

Private Sub Thread_A()
If P_Flg = True Then Exit Sub
P_Flg = True
Me.Invoke(New MethodInvoker(AddresOf ChangeMsg)
Me.Invoke(New MethodInvoker(AddresOf Me.Refresh)
P_Flg = False
End Sub

 Private Sub ChangeMsg()
'メッセージ作成処理
lblMsg.Text = "ここで処理中・・・を表示"
End Sub

Private Sub SubForm_Load(Byval sender As Object, Byval e As System.EventArgs) Handles Me.Load

Dim tim As New System.Threading.Timer(CallBack, Nothing, 0, 1 * 1000)

End Sub

End Class


返信 編集キー/


管理者用

- Child Tree -