質問

背景:OpenFileDialogとFileBrowserDialogを使用してC#を使用してWinFormsアプリケーションを開発しています。

  1. 複数のXLSファイルの選択を有効にします。
  2. 選択が行われた後、選択したXLSXファイル名をテキストボックスに表示します
  3. 選択したファイルをCONSOLIDAMEDにコピーします
  4. Winformアプリの下部にあるロギングウィンドウで結果を表示します

デバッグで次のエラーのいずれかを修正するためにどのようにお勧めしますか。

  1. FileBrowserDialogからファイルを選択した後、別のFileBrowserDialogボックスが表示されます
  2. 選択したファイルのうち1つのみがテキストボックスに表示されます。すべてのファイルを表示する十分なスペースがありませんb/cファイルパスは非常に長いです。フルパスなしでファイル名を表示することは可能でしょうか?推奨されるテキストボックスに選択したファイルを表示する以外に、MultiSelectがWinFormで機能したことを確認するためのより良い方法はありますか?
  3. Consolidateボタンを押すと、選択したファイルをConsolidated Directoryにコピーしたり、正しいログファイルを表示したりしません。
  4. ロギングウィンドウで以下を取得します。「ソースファイル:System.String []」

これが私のコードです:

private void sourceFiles_Click(object sender, EventArgs e)
{
    Stream myStream;
    int i = 0;
    OpenFileDialog sourceFilesList = new OpenFileDialog();

    this.sourceFileOpenFileDialog.InitialDirectory = "i:\\CommissisionReconciliation\\Review\\";
    this.sourceFileOpenFileDialog.Filter = "Excel Files (*.xls;*.xlsx;)|*.xls;*.xlsx;|All Files (*.*)|*.*";
    this.sourceFileOpenFileDialog.FilterIndex = 2;
    this.sourceFileOpenFileDialog.RestoreDirectory = true;
    this.sourceFileOpenFileDialog.Multiselect = true;
    this.sourceFileOpenFileDialog.Title = "Please Select Excel Source File(s) for Consolidation";

    if (sourceFileOpenFileDialog.ShowDialog() == DialogResult.OK)
    {
        try
        {
            if ((myStream = sourceFileOpenFileDialog.OpenFile()) != null)
            {
                using (myStream)
                {
                     Log("Source Files: " + sourceFilesList.FileNames);
                }
            }       // ends if 
        }           // ends try 

    catch (Exception ex)
    {
        MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
    }
  }              // ends if (sourceFileOpenFileDialog.ShowDialog() == DialogResult.OK)
}                  // ends public void sourceFiles_Click

private void consolidateButton_Execute_Click(object sender, EventArgs e)
{

string consolidatedFolder = targetFolderBrowserDialog.SelectedPath; 

    foreach (String file in sourceFileOpenFileDialog.FileNames)
    {
        try
        {
            // Copy each selected xlsx files into the specified TargetFolder 

            System.IO.File.Copy(sourceFileOpenFileDialog.FileName, consolidatedFolder + @"\" + System.IO.Path.GetFileName(sourceFileOpenFileDialog.FileName));
            Log("File" + sourceFileOpenFileDialog.FileName + " has been copied to " + consolidatedFolder + @"\" + System.IO.Path.GetFileName(sourceFileOpenFileDialog.FileName));
        }  
    }          // ends foreach loop
  }           // ends void consolidateButton_Execute_Click

有益な回答のために+1のアップボートを提供します!
見てくれてありがとう!

更新:foreach w/ a foreach(sourcefileslist.filenamesの文字列ファイル名)ループとリストボックスコントロールを更新し、2xのファイルブラウザーのロード付き問題と「system.string []」メッセージを備えた問題があります。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top