When coding drag and drop operations in C# Windows applications, you need to complete two steps. Firstly, add a DragOver event to your form in which you change the cursor over your target application so the user can see they will copy the dragged object on the form:

private void event_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
  e.Effect = DragDropEffects.Copy;
}

The second step involves handling the actual dropping of the file. This is done by adding a DragDrop event to your form, and retrieving the string array which Windows passes to your application containing the names of all the files dragged and dropped:

private void event_DragDrop(object sender, DragEventArgs e) 
{
  // get reference to the dataobject
  DataObject dataObj = (DataObject)e.Data;
  // convert into array of file names
  string[] files = (string[])(dataObj.GetData(DataFormats.FileDrop));
  // loop through each argument, performing the appropriate file opening
  for (int i=0; i<files.Length; i++) 
  {
    this.OpenFile(files[i]);
  }
}