C++ 关于实现OpenFileDialog对话框,请参见;System.IO.FileStream“;显示在结果编辑文本框中,而不是文件名和路径上。怎么用?

C++ 关于实现OpenFileDialog对话框,请参见;System.IO.FileStream“;显示在结果编辑文本框中,而不是文件名和路径上。怎么用?,c++,mfc,C++,Mfc,在VisualStudio中基于对话框的MFc应用程序中实现openFileDialog函数时,我在edittext框中得到的结果是“System.IO.FileStream” 我已经在这个问题中包含了代码。在DoDataExchange函数中,IDC_EDIT1是编辑文本框的ID void CMFCApplication6Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_T

在VisualStudio中基于对话框的MFc应用程序中实现openFileDialog函数时,我在edittext框中得到的结果是“System.IO.FileStream”

我已经在这个问题中包含了代码。在DoDataExchange函数中,IDC_EDIT1是编辑文本框的ID

void CMFCApplication6Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, path);

}

void CMFCApplication6Dlg::OnBnClickedBrowse()
{
    System::IO::Stream^ myStream;

    System::Windows::Forms::OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;


    openFileDialog1->InitialDirectory = "c:\\";
    openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog1->FilterIndex = 2;
    openFileDialog1->RestoreDirectory = true;

    UpdateData(true);
    if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
    {
        if ((myStream = openFileDialog1->OpenFile()) != nullptr)
        {
            path = myStream->ToString();
            UpdateData(false);
            myStream->Close();
        }
    }
}
执行此代码时,会打开文件打开对话框,选择文件时,“System.IO.FileStream”将显示在编辑文本框中

void CMFCApplication6Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, path);

}

void CMFCApplication6Dlg::OnBnClickedBrowse()
{
    System::IO::Stream^ myStream;

    System::Windows::Forms::OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;


    openFileDialog1->InitialDirectory = "c:\\";
    openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog1->FilterIndex = 2;
    openFileDialog1->RestoreDirectory = true;

    UpdateData(true);
    if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
    {
        if ((myStream = openFileDialog1->OpenFile()) != nullptr)
        {
            path = myStream->ToString();
            UpdateData(false);
            myStream->Close();
        }
    }
}

我相信你的问题在于声明

path=myStream->ToString()

函数返回“表示当前对象的字符串”。这是您在尝试显示路径时看到的字符串(一个描述对象类型的字符串,因此是System.IO.FileStream)

编辑:根据要求,我相信可以使用
FileDialog.FileName
属性检索路径。所以
openFileDialog1->FileName
可用于访问路径。

我相信您的问题在于该语句

path=myStream->ToString()

函数返回“表示当前对象的字符串”。这是您在尝试显示路径时看到的字符串(一个描述对象类型的字符串,因此是System.IO.FileStream)

编辑:根据要求,我相信可以使用
FileDialog.FileName
属性检索路径。所以
openFileDialog1->FileName
可用于访问路径。

我相信您的问题在于该语句

path=myStream->ToString()

函数返回“表示当前对象的字符串”。这是您在尝试显示路径时看到的字符串(一个描述对象类型的字符串,因此是System.IO.FileStream)

编辑:根据要求,我相信可以使用
FileDialog.FileName
属性检索路径。所以
openFileDialog1->FileName
可用于访问路径。

我相信您的问题在于该语句

path=myStream->ToString()

函数返回“表示当前对象的字符串”。这是您在尝试显示路径时看到的字符串(一个描述对象类型的字符串,因此是System.IO.FileStream)

编辑:根据要求,我相信可以使用
FileDialog.FileName
属性检索路径。所以
openFileDialog1->FileName
可用于访问路径。

那么如何从流对象中检索文件名和路径。建议我是否需要对此代码进行任何重大修改。编辑以反映特定建议然后如何从流对象检索文件名和路径。建议我是否需要对此代码进行任何重大修改。编辑以反映特定建议然后如何从流对象检索文件名和路径。建议我是否需要对此代码进行任何重大修改。编辑以反映特定建议然后如何从流对象检索文件名和路径。建议我是否需要对此代码进行任何重大修改。编辑以反映特定建议