Fehler Bei DragDrop registrierung



  • Hallo,
    nachdem ich dank eurer Hilfe Mein Drag and Drop zum laufen bekommen habe kommt nun das nächste Problem:

    Neuerdings tritt während der Laufzeit ein Fehler auf :

    An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
    Additional information: Fehler bei der DragDrop-Registrierung

    VS gibt zusätlich Folgende Informationen:

    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'
    'Robo Rally.exe' (Managed): Loaded 'c:\Users\teQuilamaN\Documents\Visual Studio 2008\Projects\Robo Rally\Debug\Robo Rally.exe', Symbols loaded.
    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\WinSxS\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2\msvcm90d.dll', Symbols loaded.
    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll'
    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll'
    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'
    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms.resources\2.0.0.0_de_b77a5c561934e089\System.Windows.Forms.resources.dll'
    A first chance exception of type 'System.Threading.ThreadStateException' occurred in System.Windows.Forms.dll
    A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
    An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

    Additional information: Fehler bei der DragDrop-Registrierung

    'Robo Rally.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_de_b77a5c561934e089\mscorlib.resources.dll'
    The program '[28252] Robo Rally.exe: Managed' has exited with code -532459699 (0xe0434f4d).

    Es wird ein neues Fenster aufgerufen in dem der Benutzer eine Auswahl von Objekten per Drang and Drop ausführen soll.

    Interessant dabei ist, dass dieser Laufzeitfehler bei meinen Projektpartnern vor dem Anzeigen des Fensters auftritt. Genau an der Stelle: "window->Show()" .
    Bei mir startet das angeforderte Fenster, jedoch ist kein Drag and Drop möglich.
    Wir Arbeiten alle mit VS 2008 und .NET Version 3.5 .

    Der Fehler tritt auf, wenn der Boolean "AllowDrop = true" ist. Im Fall von "false" wird das Fenster angezeigt, logischerweise ist dann aber kein DragDrop möglich.

    Der Code für die Drag and Drop Operation:

    private: System::Void pictureBoxCard1_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
                 pictureBoxCard1->DoDragDrop((Object^)((int) 0), System::Windows::Forms::DragDropEffects::Copy); // Kopiert den Wert der Karte in den Zwischenspeicher wenn maus geklickt ist
             }
    // ... weitere 10 mal für 10 Karten, der int wird hochgezählt.
    
    private: System::Void panel1_DragEnter(System::Object^  sender, System::Windows::Forms::DragEventArgs^  e) {
                 e->Effect = DragDropEffects::Copy;
             }
    
    private: System::Void panel1_DragDrop(System::Object^  sender, System::Windows::Forms::DragEventArgs^  e) {
                 if(e->Data->GetDataPresent(int::typeid))
                 {
                     int index = (int) e->Data->GetData(int::typeid); // index enthaelt int der Quellkarte
                     card* theCard = vCards->at(index); // aus vCards wird die gewaehlte Karte in theCard gespeichert
                     this->ptrRobot->vCardsElected.at(0) = theCard; // theCard wird in den Vektor mit den gewaehlten Karten geschoben
                     panel1->BackgroundImage = Image::FromFile(gcnew String(vCards->at(index)->getCardImageSmall().c_str())); // Hintergrund des Panels wird mit der richtigen Karte besetzt
                 }
             }
    
    // ... Weitere 5 mal für 5 Ablageplätze der ausgewählten Karten.
    

    Der Code in dem das Fenster aufgerufen wird:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {                 
                 srand((unsigned)time(NULL)); // fuer wirklich zufaellige generierung der Zahlen der Karten
                 ChooseCards ^window = gcnew ChooseCards(Factory::get_vRobots()->at(0)); // Initialisiert das Fenster
                 MainScreen::btnChooseCardsPlayer1->Enabled = false; // Deaktiviert den Button - Nur einmal auswaehlen moeglich
                 window->Show(); // zeigt das Fenster an
             }
    

    Wir probieren nun seit 3 Tagen rum und kommen zu keiner Lösung, sind also für jeden Tipp dankbar!

    Suimann



  • Gibts eine InnerException bei der InvalidOperationException?
    Wenn ja, welche?



  • Hallo suimann,

    hat deine Main-Methode das [STAThread]-Attribute?



  • Th69 schrieb:

    Hallo suimann,

    hat deine Main-Methode das [STAThread]-Attribute?

    Ja das ganze Programm ist single Threaded.

    theta schrieb:

    Gibts eine InnerException bei der InvalidOperationException?
    Wenn ja, welche?

    Die kompletten Exceptions, die ich bekommen stehen bereits oben. Wo ich noch mehr bekomme weiß ich leider nicht.

    Ich würde die Frage aber gern erstmal zurückstellen. Ich habe meine Auswahl jetzt erstmal anders gelöst, damit wir weiter kommen, da die Projektabgabe naht.

    suimann



  • suimann schrieb:

    Th69 schrieb:

    Hallo suimann,

    hat deine Main-Methode das [STAThread]-Attribute?

    Ja das ganze Programm ist single Threaded.

    Was die Frage ob das STAThread Attribute gesetzt ist nicht beantwortet.

    suimann schrieb:

    theta schrieb:

    Gibts eine InnerException bei der InvalidOperationException?
    Wenn ja, welche?

    Die kompletten Exceptions, die ich bekommen stehen bereits oben. Wo ich noch mehr bekomme weiß ich leider nicht.

    Na eben über das InnerException Property der InvalidOperationException.


Anmelden zum Antworten