Problem mit KeyEventArgs

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit KeyEventArgs

    Hi, ich bins wieder mal ;)

    Also Ausgangsstellung meines Problemes:
    Ich habe eine PictureBox in einem Panel, welche ich mit Hilfe von Buttons in diesem Panel rumbewege habe.
    Nun will ich ein Level höher gehen und die PictureBox nur mit den Pfeiltasten aufder Tastatur bewegen.

    Fehler:
    Es wird kein Fehler vom Compiler ausgegeben. Sobald ich das Projekt kompiliere und das Objekt mit den Pfeiltasten bewegen will, geschieht nichts. Also das Programm reagiert gar nicht erst auf die Pfeiltasten.


    Infos:
    WinXP
    VC++.Net 2003 (Form wurde im Designer erstellt)

    Mein bisheriger Code:

    Quellcode

    1. this->Load += new System::EventHandler(this, frmGame_Load);
    2. //Eventhandler für die Pfeiltasten, hier könnte der Fehler liegen
    3. this->KeyDown += new System::Windows::Forms::KeyEventHandler(this, frmGame_KeyDown);


    Quellcode

    1. private: System::Void frmGame_Load(System::Object * sender, System::EventArgs* e)
    2. {
    3. //Spieler laden
    4. picSpieler->Image = Image::FromFile("smiley.png");
    5. //Timer anhalten, weil er beim Laden der Form anfängt zu ticken :S
    6. gameTimer->Stop();
    7. //Stop-Button disablen
    8. btnStopTimer->Enabled = false;
    9. }
    10. private: System::Void frmGame_KeyDown(System::Object * sender, System::Windows::Forms::KeyEventArgs * f)
    11. {
    12. //Ränder des Panels deklarieren um Überschreitung zu verhindern
    13. int maxX = 375;
    14. int minX = -1;
    15. int maxY = 239;
    16. int minY = -1;
    17. //Hilfsvariable für Endlosschleife
    18. bool bolSpielen = true;
    19. //Spielfunktion, ermöglicht es per Pfeiltasten
    20. //den Spieler zu bewegen. Dazu wird eine EndlosSchleife
    21. //benutzt.
    22. do
    23. {
    24. //Location des Spielers ermitteln (Point)
    25. Point spielerLoc = Point(picSpieler->get_Location());
    26. //X- und Y-Koordinate des Spielers in Variablen speichern
    27. int spielerX = Convert::ToInt32(spielerLoc.get_X());
    28. int spielerY = Convert::ToInt32(spielerLoc.get_Y());
    29. switch(f->KeyCode){
    30. case System::Windows::Forms::Keys::Up:
    31. if((spielerY - 15) > minY){
    32. picSpieler->Location = Point(spielerX, spielerY - 15);
    33. }
    34. if((spielerY - 15) <= minY){
    35. }
    36. break;
    37. case System::Windows::Forms::Keys::Right:
    38. if((spielerX + 15) < maxX){
    39. picSpieler->Location = Point(spielerX + 15, spielerY);
    40. }
    41. if((spielerX + 15) >= maxX){
    42. }
    43. break;
    44. case System::Windows::Forms::Keys::Down:
    45. if((spielerY + 15) < maxY){
    46. picSpieler->Location = Point(spielerX, spielerY + 15);
    47. }
    48. if((spielerY + 15) >= maxY){
    49. }
    50. break;
    51. case System::Windows::Forms::Keys::Left:
    52. if((spielerX - 15) > minX){
    53. picSpieler->Location = Point(spielerX - 15, spielerY);
    54. }
    55. if((spielerX - 15) <= minX){
    56. }
    57. break;
    58. }
    59. }while(bolSpielen = true);
    60. }
    Alles anzeigen


    Kann mir hier jemand weiterhelfen?
    Habe keine grosse Ahnung von diesen KeyEventArgs und Eventhandlern, ich vermute, dass ich da gepatzt habe.

    Danke im voraus.

    Gruss jott