OK,这是我落得这样做,对于那些有兴趣...
// Firefox //
if (e.Data.GetDataPresent("text/x-moz-url", true)) {
HandleFirefoxUrl(e);
} else if (e.Data.GetDataPresent("text/_moz_htmlcontext", true)) {
HandleFirefoxSnippet(e);
// Internet Explorer //
} else if (e.Data.GetDataPresent("UntrustedDragDrop", false)) {
HandleIELink(e);
} else if (e.Data.GetDataPresent("UniformResourceLocatorW", false)) {
HandleIEPage(e);
} else if (e.Data.GetDataPresent(DataFormats.FileDrop, true)) { //FILES
Array droppedFiles = (Array)e.Data.GetData(DataFormats.FileDrop);
HandleFiles(droppedFiles);
} else if (e.Data.GetDataPresent(DataFormats.Bitmap, true)) { // BITMAP
Bitmap image = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap);
HandleBitmap(image);
} else if (e.Data.GetDataPresent(DataFormats.Html, true)) { // HTML
String pastedHtml = (string)e.Data.GetData(DataFormats.Html);
HandleHtml(pastedHtml);
} else if (e.Data.GetDataPresent(DataFormats.CommaSeparatedValue, true)) { // CSV
MemoryStream memstr = (MemoryStream)e.Data.GetData("Csv");
StreamReader streamreader = new StreamReader(memstr);
String pastedCSV = streamreader.ReadToEnd();
HandleCSV(pastedCSV);
// } else if (e.Data.GetDataPresent(DataFormats.Tiff, true)) {
// } else if (e.Data.GetDataPresent(DataFormats.WaveAudio, true)) {
} else if (e.Data.GetDataPresent(DataFormats.Text, true)) { //TEXT
String droppedText = e.Data.GetData(DataFormats.Text).ToString();
HandleText(droppedText);
[else if .....]
} else { // UNKNOWN
Debug.WriteLine("unknown dropped format");
}
好问题,也是,如果有人知道这个相反的(如何获得拖动项目的放置位置从创建的应用程序),他们也可以分享:-) – ThePower 2009-07-21 14:43:06
对于反之亦然的情况,我想你可能只是检测用户放开鼠标的位置,然后使用窗口句柄到PID逻辑找出它。这有点破解,但这是一个更容易的问题。 – EricLaw 2009-07-21 14:47:21