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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.54833 の関連記事表示

<< 0 >>
■54833  処理中、フォーム上にアニメーションを動かしたい
□投稿者/ ミキティ -(2010/11/04(Thu) 12:39:23)

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

    こんにちは。
    時間のかかる処理を行っている時に、フォーム上にアニメーションを表示させたいのですが、
    フォーム上のPictureboxにアニメーションgifを設定しても、処理の間はアニメーションが動きません。
    (フォームが固まる感じ)
    通常状態でフォーム上Pictureboxにアニメーションgifを設定した場合はアニメーションが動きます。
    どのようにすれば処理中にアニメーションが動くようになるでしょうか?
    VB2008です。
親記事 /過去ログ92より / 関連記事表示
削除チェック/

■54834  Re[1]: 処理中、フォーム上にアニメーションを動かしたい
□投稿者/ shu -(2010/11/04(Thu) 12:58:53)
    No54833 (ミキティ さん) に返信
    > こんにちは。
    > 時間のかかる処理を行っている時に、フォーム上にアニメーションを表示させたいのですが、
    > フォーム上のPictureboxにアニメーションgifを設定しても、処理の間はアニメーションが動きません。
    > (フォームが固まる感じ)
    > 通常状態でフォーム上Pictureboxにアニメーションgifを設定した場合はアニメーションが動きます。
    > どのようにすれば処理中にアニメーションが動くようになるでしょうか?
    > VB2008です。
    処理中に適宜、Picturebox.Refreshを実行するか別スレッドにするか、別プロセスにするなど。DoEvents
    という方法もありますが使わない方がいいです。
記事No.54833 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54835  Re[1]: 処理中、フォーム上にアニメーションを動かしたい
□投稿者/ 魔界の仮面弁士 -(2010/11/04(Thu) 13:26:55)
    No54833 (ミキティ さん) に返信
    > どのようにすれば処理中にアニメーションが動くようになるでしょうか?
    > VB2008です。

    フォームに BackgroundWorker を貼り付けて、時間のかかる処理を
    その BackgroundWorker で行うようにしてみてください。
記事No.54833 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54839  Re[2]: 処理中、フォーム上にアニメーションを動かしたい
□投稿者/ ミキティ -(2010/11/05(Fri) 09:41:40)
    shuさま、魔界の仮面弁士さま、ご回答ありがとうございました。

    No54835 (魔界の仮面弁士 さん) に返信
    > ■No54833 (ミキティ さん) に返信
    >>どのようにすれば処理中にアニメーションが動くようになるでしょうか?
    >>VB2008です。
    >
    > フォームに BackgroundWorker を貼り付けて、時間のかかる処理を
    > その BackgroundWorker で行うようにしてみてください。

    そこで、魔界の仮面弁士さまにアドバイス頂いた、BackgroundWorkerというものを使用して、
    色々と調べた結果、以下のようにやってみました。
    ・処理に必要なパラメータを構造体にして、BackgroundWorker.RunWorkerAsyncの引数に設定
    ・DoWorkイベントで処理を実行
    ・BackgroundWorker.IsBusyの間ループを回す
     その間、System.Windows.Forms.Application.DoEvents()を実行しながら該当PictureboxをRefreshする
    とりあえず、これで、少しは画面が固まるような時間がありますが、何とかアニメーションを動かすことに成功しました。
    ありがとうございました。
記事No.54833 のレス / END /過去ログ92より / 関連記事表示
削除チェック/

■54840  Re[3]: 処理中、フォーム上にアニメーションを動かしたい
□投稿者/ よねKEN -(2010/11/05(Fri) 10:25:29)
    No54839 (ミキティ さん) に返信
    > ・BackgroundWorker.IsBusyの間ループを回す
    >  その間、System.Windows.Forms.Application.DoEvents()を実行しながら該当PictureboxをRefreshする

    IsBusyの間まわしているというループがどういうものかわかりませんが、
    この引用部分の処理は不要のように思います。
    少なくともBackgroundWorkerを使うのであれば、
    Application.DoEventsとPicturebox.Refreshは不要なはずです。
記事No.54833 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54841  Re[3]: 処理中、フォーム上にアニメーションを動かしたい
□投稿者/ 魔界の仮面弁士 -(2010/11/05(Fri) 10:41:26)
    No54839 (ミキティ さん) に返信
    > ・DoWorkイベントで処理を実行
    > ・BackgroundWorker.IsBusyの間ループを回す
    
    IsBusy で処理ループを回さないでください。
    代わりに、RunWorkerCompleted で処理完了を得るようにします。
    
    
    たとえば、
    
     『RadioButton1 が選択されたら、Label1 に "TEST" と表示』
    
    という処理を実装する場合、CheckedChanged イベントを使いますよね。
    
     Private Sub RadioButto1_CheckedChanged(……
      If RadioButto1.Checked Then
       Label1.Text = "TEST"
      End If
     End Sub
    
    これをループ処理で
    
     Do Until RadioButton1.Checked
      Application.DoEvents()
     Loop
     Label1.Text = "TEST"
    
    と書いたりはしないと思いますが、それと同じことです。
記事No.54833 のレス /過去ログ92より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -