Первое случайное исключение типа ‘System.InvalidCastException’ произошло в whatever.exe

#visual-studio-2010 #exception #drag-and-drop

#visual-studio-2010 #исключение #перетаскивание

Вопрос:

Здесь очень ржавый программист на языке C с практически нулевым опытом работы с Visual Studio. Я просто пытаюсь собрать простую программу, которая изменит расширение файлов, которые на нее сбрасываются, но я столкнулся с проблемой в названии, которая возникает, когда событие DragDrop запускается при перетаскивании файла в форму. Оно доходит до следующей строки:

Строка ^ sOldName = (Строка ^) e-> Data-> getData(DataFormats::FileDrop, false);

затем возникает исключение и прерывается событие. Я разорвал много этого кода повсюду, так что есть большая вероятность, что это просто старомодный синтаксис или что-то в этом роде.

Я действительно ценю любую помощь в этом. Спасибо.

Ответ №1:

Здесь есть две проблемы.

Во-первых, вы можете указать true , not false , чтобы разрешить GetData вызову автоматически обрабатывать преобразование формата для вас. Если данные в неправильном формате, вы не сможете преобразовать данные в String^ .

Во-вторых, данные из файла оболочки обычно удаляются array<String^>^ , а не String^ .

Попробуйте выполнить следующее:

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

Комментарии:

1. Большое спасибо, это сработало отлично. В случае, если кто-то еще работает так же медленно, как я, и читает это, не забывайте, что строка теперь является массивом и после этого должна обрабатываться как таковая. Вскоре исправлено с помощью нескольких квадратных скобок.