Visual studio 2008 能否获取指向System::Object^内部的{System.Array}的指针?

Visual studio 2008 能否获取指向System::Object^内部的{System.Array}的指针?,visual-studio-2008,c++-cli,Visual Studio 2008,C++ Cli,我有一个程序,它接受用户拖放到标签盒上的文件。程序当前能够接受删除的文件。然后将文件保存到System::Object^中。在System::Object^内部是一个{System.Array},它保存放置在标签框中的文件的路径 我需要能够访问System::Object^内部{System.Array}中的文件路径。我正在把另一个我用Visual Basic编写的程序转换成C++;所以我试图让两个程序的代码彼此非常接近。我已经研究了一点OLE的拖放功能,我认为我应该能够按照我在这段代码中开始的

我有一个程序,它接受用户拖放到标签盒上的文件。程序当前能够接受删除的文件。然后将文件保存到System::Object^中。在System::Object^内部是一个{System.Array},它保存放置在标签框中的文件的路径

我需要能够访问System::Object^内部{System.Array}中的文件路径。我正在把另一个我用Visual Basic编写的程序转换成C++;所以我试图让两个程序的代码彼此非常接近。我已经研究了一点OLE的拖放功能,我认为我应该能够按照我在这段代码中开始的方式执行拖放。我觉得OLE对于我所需要的太多了,我只需要文件的路径。关于如何获取文件路径有什么想法吗

private:System::Void lblDragHere\u DragEnter(System::Object^sender,System::Windows::Forms::DragEventArgs^e)
{
如果(e->Data->GetDataPresent(系统::Windows::窗体::数据格式::FileDrop))
e->Effect=System::Windows::Forms::DragDropEffects::All;
其他的
e->Effect=System::Windows::Forms::DragDropEffects::None;
lblError->Visible=false;
blnsavesuccesful=false;
}
私有:系统::Void lblDragHere_DragDrop(系统::对象^sender,系统::Windows::窗体::DragEventArgs ^e)
{
bool bln continue=false;
//检查用户是否未设置文件的保存位置。
如果(lblSaveLocation->Text==“当前保存位置”)
{
lblError->ForeColor=颜色::红色;
lblError->Text=“请先选择保存位置。”;
lblError->Visible=true;
}
其他的
{
lblError->Visible=false;
//检查用户是否确实在lblDragHere上放置了任何内容
如果(e->Data->GetDataPresent(DataFormats::FileDrop))
{
系统::对象^MyFiles;
//将文件分配给数组。
MyFiles=e->Data->GetData(DataFormats::FileDrop);
}
}
}

您应该能够通过强制转换以文件名的cli数组的形式直接获取数据:

if(e->Data->GetDataPresent(DataFormats::FileDrop))
{
    // Assign the files to the array.
    array<String^>^ myFiles = (array<String^>^)e->Data->GetData(DataFormats::FileDrop);

    // Do something with the files
    for each(String^ file in myFiles)
    {
        ...
    }
}
if(e->Data->GetDataPresent(DataFormats::FileDrop))
{
//将文件分配给数组。
数组^myFiles=(数组^e->Data->GetData(DataFormats::FileDrop);
//对这些文件做些什么
对于每个(myFiles中的字符串^file)
{
...
}
}

(您应该使用<代码> Value<代码>代替Stase::Value,它更可读)

这不是C++,也不是Visual C++,也不是Visual Basic。这是C++/CLI。重新标记一致将程序从VB移植到C++/CLI的动机是什么?你的VB和C++ +CLI项目是否应该保持互操作性?我正试图将程序从Visual Basic改为C++,因为我的VB程序与一些大型TIFF图像有问题。我打开了C++中的错误,没有问题。我希望它们尽可能接近,因为调试程序的人主要处理Visual Basic,他们对C++不太熟悉。