Picturebox DragDrop problem...



  • Hi leute,

    vermutlich habe ich mal wieder einen recht dämlichen Fehler, ich versuche mich derzeit an einer PictureBox mit Drad'n'Drop funktion doch wenn ich das Pic droppe sehe ich nur den Hintergrund der Picturebox 😞 hier dier Code:

    private void pictureBox1_DragDrop(object sender, DragEventArgs e)
            {
    
                pictureBox1.AllowDrop = true;
                pictureBox1 = sender as PictureBox;
                pictureBox1.Image = (Image)e.Data.GetData(DataFormats.Bitmap);
    
            }
    

    übrigens als kleine Frage nebenbei... wenn ich den Path dieser PictureBox in einer anderen Funktion benutzen möchte, muss ich sie dann vererben? oder wie?



  • Zeile 5 solltest du dir genau überlgegen!



  • ok sorry ich bin etwas zu dämlich um den Fehler zu finden, was ist daran falsch? kenne den 'as' operator eigl. auch nicht wirklich... 'as image' hat auch nicht funktioniert



  • as ist nur eine Konvertierung also das Objekt 'sender' als picturebox, ich wüsste aber auch nicht was an der Zeile falsch sein soll, ist nur unnötig: 'sender' = pictureBox1 -> pictureBox1 = pictureBox1 as pictureBox.
    Ich glaube das Problem ist, dass du die Eigenschaft AllowDrop erst true setzt in dem Event dafür, setze die Eigenschaft vorher auf true. In solchen Momenten wenn einfach nichts passiert, solltest du mal ne Compilersprungmarke setzen oder ne MessageBox in das Event damit du weißt ob der Code überhaupt ausgeführt wird.
    Du machst übrigens das mit dem as nochmal in Zeile 6 nur in anderer Form: (Image).



  • mich wundert die zeile

    pictureBox1.AllowDrop = true;
    

    an der stelle

    allowdrop muss doch schon auf true stehen damit diese methode aufgerufen wird
    kommst ueberhaupt in die methode rein ?

    schau mal im debugger ob das Image an dieser stelle null ist oder nicht:

    var image = e.Data.GetData(DataFormats.Bitmap, true) as Image;
    


  • mh @Mr Evil, naja ich kann die Control ja nicht durch den Form-Designer auf 'AllowDrop = True' stellen, also habe ich es manuell hingeschrieben... übrigens, ja ich komme in die Methode rein, habe einfach mal ne MessageBox in der Methode erstellt und sie funktioniert

    übrigens ja,

    var image = e.Data.GetData(DataFormats.Bitmap, true) as Image;
    

    ist an der Stelle null



  • An der stelle ist es logisch, da die Zuweisung noch nicht durchgeführt wurde ^^ du musst die Haltemarke danach setzen.



  • ...naja ich kann die Control ja nicht durch den Form-Designer auf 'AllowDrop = True' stellen...

    Eigentlich schon, aber vllt. liegt auch ein Mißverständnis deinerseits vor.
    Welches Element willst du wohin droppen? Bisher scheint es, als ob du ein Bitmap-Objekt auf eine PictureBox droppen willst. Aber woher kommt das Bitmap-Objekt?

    Und bzgl. "Path dieser PictureBox": eine PictureBox hat KEINEN Pfad, sondern beinhaltet nur ein Image (und dieses kann als Bitmap aus dem Filesystem geladen worden sein), aber nachträglich gibt es keine Möglichkeit den Pfad auszulesen!



  • Das Bitmap-Objekt stammt vom Desktop / aus Ordnern


Anmelden zum Antworten