StatusStrip

解決


fumofumo  2010-06-09 18:16:18  No: 146910

環境:  WinXP(SP3) , VB2005 , Oracle9i
で StatusStrip についてご教授願います。

やりたいこと:
①Button を押したら StatusStrip に「データ表示中・・・しばらくお待ち下さい」を表示
②①と同じイベント内でデータを SPREAD にバインド
③①と同じイベント内で StatusStrip に 「○○件表示しました」を表示

上記三つを一つのボタンクリックイベントに記述すると
①が表示されずに③だけが表示されます。

なにか StatusStrip の設定等があるのでしょうか?
宜しくお願いします。

-- コード --
Private Sub BtnHyouji_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHyouji.Click
    Me.Cursor = Cursors.WaitCursor
    Str1.Items(0).Text = "データ表示中・・・しばらくお待ち下さい。"  --①
    -- データ表示処理 --
    Str1.Items(0).Text = SS.Sheets(0).RowCount.ToString("#,0") & "件表示しました。" --③


aetos  2010-06-10 00:57:03  No: 146911

単に処理2が一瞬で終わっているから、1が見えないとかではないのですか?
処理2にはそれなりの時間がかかっているのでしょうか?


fumofumo  2010-06-10 01:32:24  No: 146912

aetos さんご返信ありがとうございます。

処理2には30Sほどかかるのですが
処理2中は Str1.Items(0).Text  には
何も表示されません
処理3をコメントにしていると
処理2中に処理1のメッセージは
表示されます

宜しくお願いします。


YuO  2010-06-13 08:35:03  No: 146913

自分が処理をしている最中は,原則的に表示は更新されません。
Str1.Refreshを呼び出してみてください。
MSDN: Control.Refresh メソッド (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.refresh.aspx

----

本来的な方法としては,処理2をバックグラウンドスレッドに処理させることですが,
データバインド処理自体に時間がかかっているならば,UI側でやらざるを得ません。
バインド処理の前に例えばOracleにSELECT文を発行しているような場合で,バインド自体ではなくデータ取得処理に時間がかかっているのであれば,
データ取得処理をバックグラウンドスレッドに行わせるようにしてください。
MSDN: BackgroundWorker クラス (System.ComponentModel)
http://msdn.microsoft.com/ja-jp/library/system.componentmodel.backgroundworker.aspx
Blog: マルチスレッド Windows フォームアプリケーションの開発 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
http://blogs.msdn.com/b/nakama/archive/2009/03/30/windows.aspx
Blog: Part 1. Windows フォームのマルチスレッド処理の基礎 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
http://blogs.msdn.com/b/nakama/archive/2009/03/31/part-1-windows.aspx
Blog: タスクスレッドの起動方法 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
http://blogs.msdn.com/b/nakama/archive/2009/04/02/9521640.aspx
Blog: Part 3. タスクスレッドと UI の協調動作 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
http://blogs.msdn.com/b/nakama/archive/2009/04/07/part-3-ui.aspx
Blog: Part 4. Visual Studio によるマルチスレッドアプリの開発 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
http://blogs.msdn.com/b/nakama/archive/2009/04/09/part-4-visual-studio.aspx


fumofumo  2010-06-14 22:34:30  No: 146914

YuO さん
アドバイスありがとうございます。

今別件の仕事があり直ぐに試せないので
結果が出次第ご報告したいと思っております。


fumofumo  2010-06-17 02:32:25  No: 146915

YuO  さん

Str1.Refresh  で目的は達成できました。

ありがとうございました。

また、これからバッググラウンド処理の方も
勉強していきたいと思っております。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加