1

ネットワークをスキャンし、リストボックスにすべての情報を入力するアプリケーションを作成しました。現在所有しているネットワーク デバイスの数が多いため、検出プロセスが期待どおりに完了するまでに少し時間がかかります。ネットワークがスキャンされていることをユーザーに知らせるために、ある種の進行状況バーを表示したいのですが、その方法がわかりません。正しい方向に向けてください。小さなフォームを動的に作成して、プログレス バーを表示することを考えていましたが、この時点で途方に暮れています。ありがとうございました。

4

2 に答える 2

1

ListBox と同じフォームにプログレス バーを配置するだけです。

進行状況を表示することはアートフォームです。事前にスキャンするネットワーク デバイスの数がわかっている場合は、Maxをその数に設定します。次に、ListBox チェックを更新するときに、次のネットワーク デバイスを使用している場合は、進行状況バーの位置も更新できます。

2 つのプログレス バーを使用することもできます。1 つはネットワーク デバイスの数用で、もう 1 つは現在のネットワーク デバイス用です。また、スキャンするものがさらに見つかったら、 Maxを更新することもできます。

この問題は、開始時にネットワーク デバイスの数がわからない場合や、最後のデバイスのスキャンに以前のすべてのデバイスを組み合わせた場合よりも時間がかかる場合があるという事実に伴います。その場合、前後に跳ね返るストロボ プログレス バーを使用できます。ListBox を更新するときにその更新を行うか、タイマーで更新することができます。これは、あなたが忙しくロックアップしていないことをユーザーに知らせるだけです。

処理中にユーザーがコントロールをクリックできないようにする場合は、それらのコントロールを無効にすることができます。

于 2013-04-18T20:41:16.430 に答える
1

FormCreateあなたの質問は、イベントのように、ユーザーがフォームのボタンをクリックしたときではなく、プログラムが起動したときに最初にネットワークスキャンが行われていることを意味します. これが実行中の場合は、ネットワーク スキャン コードをスレッドに配置し、メイン フォームの開始時にスレッドを起動することを検討してください。そうすれば、ユーザーは実際にフォームを見て、スレッドからフォームの ProgressBar またはステータスの更新を送信できます。

これを行う簡単な方法はTimer、フォームに を配置するFormCreateFormActivate、タイマーを開始することです。タイマーのOnTimerイベントによってネットワーク スキャンが開始され、そこから ProgressBar を更新したり、ListBox などにステータス メッセージを送信したりできます。

于 2013-04-19T17:54:02.527 に答える