2013-03-22 69 views
2

我在我的代碼中設置了一個多選函數,允許我打開多個「.txt」格式的文件。這裏是問題,我打算如何通過OpenFileDialog打開所有這些選定的文件?下面的代碼和「for each」這行代碼,當我使用System :: Diagnostics :: Debug時,它只顯示來自文件的數據,而其他文件的數據丟失。我應該如何修改「for each」之後的代碼?任何人都可以提供一些建議或建議?所選文件爲1_1.txt,2_1.txt,3_1.txt。感謝您的回覆,並提前致謝。如何在OpenFileDialog中單擊打開後讀取多個文件?

這是我寫的代碼,

Stream^ myStream; 
OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog; 
openFileDialog1->InitialDirectory = "c:\\"; 
openFileDialog1->Title = "open captured file"; 
openFileDialog1->Filter = "CP files (*.cp)|*.cp|All files (*.*)|*.*|txt files (*.txt)|*.txt"; 
openFileDialog1->FilterIndex = 2; 
openFileDialog1->Multiselect = true; 

if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) 
{ 
    array<String^>^ lines = System::IO::File::ReadAllLines(openFileDialog1->FileName); 
    for each (String^ line in lines) { 
    //????? 
    System::Diagnostics::Debug::WriteLine("",line); 
    } 
} 
+0

這不是C++ – 2013-03-22 17:38:19

+0

@ user931794這是C++/CLI – 2013-03-22 17:41:06

+0

肯你有'標記C#' – MethodMan 2013-03-22 17:41:48

回答

1

你需要看看OpenFileDialog.FileNames財產,如果你允許選擇多個文件:

if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) 
{ 
    for each (String^ file in openFileDialog1->FileNames) 
    { 
    array<String^>^ lines = System::IO::File::ReadAllLines(file); 
    for each (String^ line in lines) 
    { 
     System::Diagnostics::Debug::WriteLine("",line); 
    } 
    } 
} 
+0

這裏沒有提供C++的例子,因爲我對這個還不是很熟悉,而且不熟悉c#到C++的轉換。如果我要求示例或指導,這沒關係? – Ken 2013-03-22 17:48:07

+0

@Ken上面應該可以工作 - 你從我的代碼示例中不能理解什麼? – 2013-03-22 18:10:09

+0

對不起,我沒有意識到代碼實際上與我的不同。它嘗試後,我非常感謝你的幫助和你的時間。對這件事抱歉。 – Ken 2013-03-22 18:16:51

0

使用FileNames財產。

C#版本(應該很容易對C適應++):

foreach (var file in openFileDialog1.FileNames) 
{ 
    foreach (var line in File.ReadAllLines(file) 
    { 
    ... 
    } 
} 
+0

你可以提供我的C++版本嗎?因爲我對它還不熟悉,不熟悉從c#到C++的轉換。在你展示的範圍內,是否包含我想要的任何過程? – Ken 2013-03-22 17:51:16

相關問題