我正在努力完成一項我認爲很簡單的任務。獲取拖放數據從資源管理器到Windows窗體的文件名
我有一個Windows Forms應用程序,用C++/CLI編寫。我希望用戶能夠將文件拖放到表單中進行某種處理。
我設置表格行爲的AllowDrop和的dragenter事件引發。
我如何檢索文件名?我看到this example in C#,但沒有得到任何運氣移植到C++/CLI
這是我的嘗試:
private: System::Void tabSingle_DragEnter(System::Object^ sender,
System::Windows::Forms::DragEventArgs^ e)
{
if (e->Effect == DragDropEffects::Link)
{
// This is true
}
try
{
String^ filename = (String^) e->Data->GetData("FileName");
}
catch(...)
{
// System.InvalidCastException: Impossible to convert an object of type 'System.String[]' in to'System.String'
}
}
提前感謝!
編輯:我更新了答案和我收到的例外的描述。看起來像預期的對象是一個System.String []。我應如何修改該行具有相同的行爲,因爲這行C#(從here)
Array data=((IDataObject)e.Data).GetData("FileName") as Array;
「這些總是失敗」:*它是如何失敗的?你得到的例外是什麼? –
更新我的問題,收到的例外 – Lelo