在实现 OpenFileDialog 时,"System.IO.FileStream"显示在生成的编辑文本框中,而不是文件名和路径上。如何?

On implementing a OpenFileDialog box,"System.IO.FileStream" is appearing on the resultant edittext box rather than the filename and path. How?

本文关键字:文件名 路径 如何 编辑 System OpenFileDialog 实现 IO FileStream 显示 文本      更新时间:2023-10-16

在基于对话框的MFc应用程序中在Visual Studio中实现openFileDialog函数时,我在编辑文本框中得到"System.IO.FileStream"作为结果

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

执行此代码时,将打开"文件打开"对话框,选择文件时,"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();

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

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