Laden...

Drag and Drop auf ein Panel

Erstellt von gelöschtem Konto vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.162 Views
Gelöschter Account
vor 10 Jahren
Drag and Drop auf ein Panel

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?

T
314 Beiträge seit 2013
vor 10 Jahren

Hi,

sind denn die Bilder die du draufziehst auch Bitmaps also bmp's?

Gruß,
t0ms3n

Gelöschter Account
vor 10 Jahren

Ja sind sie, aber das sollte eigentlich nicht relevant sein.

4.221 Beiträge seit 2005
vor 10 Jahren
  
        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...

4.931 Beiträge seit 2008
vor 10 Jahren

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 !

Gelöschter Account
vor 10 Jahren

Schau mal die Pfeile... und klingelts ?

Ich glaube ich verstehe was du meinst, DataFormats.Bitmap funktioniert nur innerhalb der Form wenn irgendwelche Bitmaps per Drag&Drop durch die Gegend geschoben werden oder?

4.221 Beiträge seit 2005
vor 10 Jahren

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...