Moin moin alle zusammen,
erst mal den Code bevor ich mein Problem beschreibe:
private void levelPanel_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Bitmap))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void levelPanel_DragDrop(object sender, DragEventArgs e)
{
string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
foreach (string fileLoc in filePaths)
{
if (File.Exists(fileLoc))
{
try
{
Point localPoint = levelPanel.PointToClient(new Point(e.X, e.Y));
AddSprite(fileLoc, localPoint.X, localPoint.Y);
}
catch
{
MessageBox.Show("Falsches Datenformat?"
+ "\nErlaubt Formate sind: *.png, *.jpeg, *.bmp ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
}
Ich möchte das ich Bilder per Drag and Drop in mein Panel ziehen kann, was auch so weit funktioniert, aber beim DragEnter funktioniert irgendwie die Datenformat Erkennung nicht und ich habe keine Ahnung warum. Bisher handhabe ich es mit try catch im DragDrop was ja aber nicht so das wahre ist wenn man es richtig machen kann. Im Netz habe ich zwei Möglichkeiten gefunden wie das realisiert werden könnte, die eine steht oben schon dran mit
if (e.Data.GetDataPresent(DataFormats.Bitmap))
oder
if (e.Data.GetDataPresent(typeof(Bitmap)))
aber beides funktioniert nicht, weiß jemand warum?
Hi,
sind denn die Bilder die du draufziehst auch Bitmaps also bmp's?
Gruß,
t0ms3n
private void levelPanel_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Bitmap)) <------------ { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.None; } } private void levelPanel_DragDrop(object sender, DragEventArgs e) { string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop)); <--------- foreach (string fileLoc in filePaths) { if (File.Exists(fileLoc)) { try { Point localPoint = levelPanel.PointToClient(new Point(e.X, e.Y)); AddSprite(fileLoc, localPoint.X, localPoint.Y); } catch { MessageBox.Show("Falsches Datenformat?" + "\nErlaubt Formate sind: *.png, *.jpeg, *.bmp ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } }
Schau mal die Pfeile... und klingelts ?
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Hallo,
da hast du wohl etwas falsch verstanden. Ich nehme an, du meinst, daß du mittels dem Windows Explorer Dateiverknüpfungen auf dein Programm ziehst, oder? Dann mußt du auf 'DataFormats.FileDrop' prüfen, s. mein Code bei Wie ListView Drag&Drop mit mehreren Items !
Google-Suche nach msdn DataFormats.Bitmap
Nachtrag: IDataObject.GetFormats-Methode
Du kannst ja prüfen was alles im e.Data verfügbar ist... Nur was verfügbar ist kannst Du auch verwenden...
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...