背景: OpenFileDialog と FileBrowserDialog を使用して C# を使用して WinForms アプリケーションを開発しています。
- 複数の xls ファイルの選択を有効にします。
- 選択後、選択したxlsxファイル名をテキストボックスに表示
- 選択したファイルを別のディレクトリにコピー 統合
- winForm アプリの下部にあるログ ウィンドウに結果を表示します。
デバッグで次のエラーを修正する方法をお勧めします:
- FileBrowserDialog からファイルを選択すると、別の FileBrowserDialog ボックスが表示されます
- 選択したファイルの 1 つだけがテキスト ボックスに表示されます。ファイル パスが長すぎるため、すべてのファイルを表示する十分なスペースがありません。フルパスなしでファイル名だけを表示することは可能でしょうか? 選択したファイルをテキストボックスに表示する以外に、WinForm で MultiSelect が機能していることを確認するためのより良い方法はありますか?
- [統合] ボタンをクリックしても、選択したファイルが統合ディレクトリにコピーされず、正しいログ ファイルが表示されません。
- ログウィンドウに次のように表示されます:「ソースファイル: 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 (sourceFilesList.FileNames 内の文字列 FileName) ループとリストボックス コントロールを使用してコードを更新しましたが、2x をロードするファイルブラウザーでまだ問題があり、「ソース ファイル: System.String[]」メッセージが表示されます。