>>165だけど、原因がわかったので参考のために書いておくよ。
ドラッグイベントのハンドラーの中で、ファイル名を受け取るのに、

string[] filename = (string[])e.Data.GetData(DataFormats.FileDrop, false);

と書くべきを

string filename = (string)e.Data.GetData(DataFormats.FileDrop, false);

としていた。ドラッグは複数ファイル選択される場合もあるから、受け手は配列で受ける必要があるってことみたい。