0

指定されたフォルダー内のすべてのファイルを一覧表示するwinformプロジェクトがあります。これにより、ユーザーはファイルごとに新しい宛先を選択でき、ユーザーが移動するすべてのファイルの宛先を選択すると、ファイルを1つずつ移動します。

次のステップは、ファイルの移動時に確認フォームを表示し、移動中に各ファイルの名前と宛先を確認フォームに追加する必要があることです。

私の質問は、確認フォームのコントロールにテキストを追加した後、どうすればよいですか(confirm.showdialog()ユーザーの操作なしで他のフォームから使用しますか?表示する必要があるため、元のフォームからテキストを追加する必要があると思います)そのファイルを移動し始めたときにそれぞれが、私はどんな提案にもオープンです:)

TIA

4

3 に答える 3

1

上記の両方の答えは良いです。

私が正しく理解していれば、メインフォームでは複数のファイルを選択し、それらのファイルの移動先を選択して移動プロセスを開始できます。それがあなたが必要とするものであるならば、私は単に以下をするでしょう:

  1. 対話を必要とせずに、どのファイルが移動されているかをユーザーに通知するだけで、プロセスをユーザーに報告する新しいフォームを作成します。
  2. BackgroundWorkerオブジェクトのインスタンスを作成し、(メインフォーム内の)BackgroundWorker.DoWork()メソッドからfile-moveメソッドを呼び出します。
  3. 進行状況を報告するためにBackgroundWorkerにフラグを立ててから、move-fileメソッド内からBackgroundWorker.ReportProgress()イベントハンドラーを呼び出します。
  4. 以前に作成したファイル名のリストを使用してその名前を取得し、ファイルの変更中にファイル移動ダイアログフォームに報告します。ラベルを介した単純なDataBindingは、CurrencyManagerをリスト内の次の項目に移動するときにうまくいくはずです。または、リストインデクサーを使用して特定のインデックスのファイル名を取得することもできます。
  5. ユーザーが移動プロセスを起動したら、ファイル名を取得してカウントし、ProgressBarの最大値をファイルの数に設定します。
  6. BackgroundWorker.ReportProgress()メソッドは引数として整数値を取り、ProgressChanged()イベントハンドラーを使用して、インデックスの場所でファイル名を取得することにより、ウィンドウにコピーされているファイルの名前を表示できます。 ReportProgress()メソッドによって指定されたインデックス。

これにより、フォームが作成されたメインスレッドを「フリーズ」することなく、補足スレッドのパフォーマンスを使用できるようになります。その後、ファイルの移動を同時に実行し、ファイル名を進行状況フォームに表示できます。 ProgressBarコントロールを使用して進行状況を視覚的にユーザーに示し、必要に応じてファイル名を表示します。

これは役に立ちますか?

于 2010-03-14T04:20:30.560 に答える
0

プリセットダイアログを使用する代わりに、別のフォームを作成する方が簡単ではないでしょうか。

そうすれば、入力して更新するテキストボックスを作成できます。

于 2010-03-14T03:38:18.067 に答える
0

確認ダイアログウィンドウ内にファイルの移動を表示するために、すべてのコードを配置することができます。

しかし、より完全な解決策を提供するために、ファイル移動情報をどのように収集しているかを教えてください。

良い解決策は、移動するファイルのリストを渡してから、ダイアログで移動機能を実行することです。

于 2010-03-14T03:39:10.003 に答える