- PR -

実行中のLabel

1
投稿者投稿内容
ZERO
常連さん
会議室デビュー日: 2006/12/14
投稿数: 48
投稿日時: 2007-07-20 12:11
いつも拝見させていただいています。

現在VS2003 VB.netにてWindowsアプリケーションの開発を行っていますが、
メインのFormから新しいFormを開いた時に
新しいFormのLabelの内容が消えてしまい(透明になる)困っています。

新しいFormはプログレスバーにて処理状況を表示させています。

何かご存知の方がいましたら、教えていただけないでしょうか?
オノデラ
会議室デビュー日: 2007/06/05
投稿数: 10
投稿日時: 2007-07-20 12:36
どんな感じのプログラムを書いているのでしょうか?
(たぶん DoEvent とか使えば解決できそうな気がしますが)
ZERO
常連さん
会議室デビュー日: 2006/12/14
投稿数: 48
投稿日時: 2007-07-20 12:41
オノデラ様、返信ありがとうございます。

プログラムとしては、単純に
Formのインスタンスを作成してshowメソッドで表示させているだけです。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-07-20 13:15
たぶん、
・処理開始
・進捗用の新しいフォームを表示
・ループ処理
・進捗(プログレスバー)およびラベル更新
ということではないですか?
でしたら、その処理(End Sub)を抜けないと溜まっているメッセージは処理されません。
つまり、ラベルの値を書き換えて描画要求メッセージを投げてもその場で処理されず、おっしゃる現象になります。
オノデラさんの言われるApplication.DoEventsで溜まっているメッセージをその場で処理させるか、
#ただし、溜まっているすべてのメッセージが対象ですのでその副作用は考慮しなければなりません。
Form.RefreshまたはLabel.Refresh等でその場で強制描画させてください。
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 2007-07-20 13:24
ご参考になりそうなリンクを

過去スレッド
件名:プログレスバーが再描画されない
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=38640&forum=7&4
にもはりましたが、ここにもはっておきます。

参考リンク:
Application.DoEvents メソッド
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.application.doevents(VS.80).aspx

@IT > Insider.NET > .NET TIPS > 時間がかかる処理での「応答なし」を回避するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/136doevents/doevents.html

DOBON.NET > プログラミング道 > .NET Tips > その他のTips > 時間のかかる処理の進行状況を表示する
http://dobon.net/vb/dotnet/programing/displayprogress.html
ZERO
常連さん
会議室デビュー日: 2006/12/14
投稿数: 48
投稿日時: 2007-07-20 13:29
まどか様、IIJIMAS様、返信ありがとうございます。

Refreshメソッドを使用することで、表示されました。

皆様、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)