2013-03-22 94 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

相关问题