2012-04-18 8 views
1

私は、ProgressBarコントロールを持つPolicyRefreshStatus.vbというvb.net windowsフォームアプリケーションにフォームを持っています。 EditPolicy.vbというメインフォームから、私はEditPolicy.vbの上にPolicyRefreshStatus.vbを表示する必要がありますが、物事は配線されています。私はProgressBarを制御していて、EditPolicy.vb内のロジックからステップを実行しています。モーダルで別のフォームの上にフォームを保存しますが、実行を続行します

.show()メソッドを使用してPolicyRefreshStatus.vbバーを表示すると問題なく動作します。問題は、ユーザーがメインフォームをクリックしてPolicyRefreshStatus.vbがフォーカスを失った場合です。 .ShowDialog()を使用してPolicyRefreshStatus.vbをモーダルフォームとして表示すると、.ShowDialog()ステートメントの後にEditPolicy.vbで実行が停止します。コード内で例えばので

mPolicyRefreshStatus = New PolicyRefreshStatus 
mPolicyRefreshStatus.pbMax = mPolicy.ClaimsUpdateMax 
mPolicyRefreshStatus.ShowDialog() 
mPolicy.UpdateFromFIS() 

ラインmPolicy.UpdateFromFIS()閉じるようにPolicyRefreshStatusフォームを待っているため実行されません。

PolicyRefreshStatusをモーダルフォームで表示するにはどうすればよいですか?ただし、EditPolicy.vbで実行を続行できますか?

+1

topmostをtrueに設定しても問題ありませんか? – gbianchi

答えて

0

関連するオプションがいくつかあります。

これは、作業単位をデリゲートまたはインターフェースを実装するクラスの形式で進行状況バーに渡すことです。 (正確性のためにチェックされていない、ただ荒い例)このような何か:

mPolicyRefreshStatus = New PolicyRefreshStatus 
mPolicyRefreshStatus.pbMax = mPolicy.ClaimsUpdateMax 
mPolicyRefreshStatus.UnitOfWork = AddressOf(mPolicy.UpdateFromFIS()) 
mPolicyRefreshStatus.ShowDialog() 

が続いて進行フォーム内あなたが実際に作業を行うルーチンに戻って呼び出すことができます。

もう1つの方法は、ProgressFormでイベントを定義してから、所有/起動オブジェクトがこれらのイベントを処理して作業を実行できるようにすることです。このオプションを使用すると、かなり詳細な一連のイベントを作成して、キャンセルしますが、コンセプトは同じです。実際のビジネスロジックを実行するには、進捗状況からランチャーに戻ってきます。

+0

ありがとうございます。私はPolicyRefreshStatusにmPolicyを渡し、そこから作業を終わらせました.... –

0

フォームをモーダルに表示することはできず、ルーチンを続行することはできません。フォームを非モーダルで表示し、次に他のものを行い、終了したらフォームを閉じる必要があります。タスクが完了するまでループするかもしれませんか?

親フォームパラメータでShow()を使用すると、使いやすさが向上します。ツールウィンドウのようなもの。

関連する問題