2011-10-19 70 views
1

非常生鏽的本地C++程序員,在Visual Studio中幾乎沒有任何經驗。我只是試圖將一個簡單的程序敲在一起,它會改變文件的擴展名,但是我遇到了標題中的問題,當文件被拖放到表單上時觸發DragDrop事件。它取得如下一行:whatever.exe中發生類型'System.InvalidCastException'的第一次機會異常

String^sOldName =(String ^)e-> Data-> GetData(DataFormats :: FileDrop,false);

然後拋出異常並跳出事件。我從各處撕掉了很多這樣的代碼,所以很有可能它只是一種老式的語法或其他東西。

我非常感謝這方面的幫助。謝謝。

回答

0

這裏有兩個問題。

首先,您可以指定true而不是false,以允許GetData調用爲您自動處理格式轉換。如果數據格式不正確,則無法將數據轉換爲String^

其次,來自外殼文件丟棄的數據通常是array<String^>^,而不是String^

嘗試以下操作:

array<String^>^ sOldName = (array<String^>^) e->Data->GetData(DataFormats::FileDrop, true); 
+0

非常感謝,也非常完美。如果其他任何人都像我一樣慢,並閱讀這個,那麼不要忘記,字符串現在是一個數組,然後需要像這樣處理。很快用幾個方括號固定。 – user962023

相關問題