Mit Tastatur Button Bewegen



  • Wäre Location nicht passender ?



  • Und wie mache ich das?
    Ich habe dauernd verssucht mit den Koordinaten des Buttons zu arbeiten aber das ging nicht. Bei Point und PointF gabs immer einen Syntacgehler(Warscheinlich wegen falscher Anwendun^^).
    Könntet ihr mir das bitte etwas erklären?
    mfg



  • Servus,

    hilfreich ist es immer wenn man das bisher entwickelte und den Fehler postet...

    Es ist recht einfach...

    Du gehst hin und fängst das OnKeyDown/Up Event in deiner Applikation ab, fragst nach was für eine Taste gedrückt wurde und setzt die Location:

    private void OnKeyUp(object sender, KeyEventArgs e)
    {
        Point location = this.button1.Location;
        switch ( e.KeyCode )
        {
            case Keys.Up:
                this.button1.Location = new Point(location.X, location.Y - 1);
                break;
    
            case Keys.Down:
                this.button1.Location = new Point(location.X, location.Y + 1);
                break;
    
                // Left + Right überlasse ich dir ;-)
        }
    }
    

    Viel Spaß
    Hellsgore



  • Ich habe den Text eingegeben und der Compiler meldet keine Fehler. Aber es passiert irgendwie nichts.
    Der 1.Code(keine Fehler)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Tastendrücken
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
                 private void OnKeyUp(object sender, KeyEventArgs e)
            {
                Point location = this.button1.Location;
                switch (e.KeyCode)
                {
                    case Keys.Up:
                        this.button1.Location = new Point(location.X, location.Y - 1);
                        break;
    
                    case Keys.Down:
                        this.button1.Location = new Point(location.X, location.Y + 1);
                        break;
    
                    // Left + Right überlasse ich dir ;-) 
                }
            }
        }
    }
    

    Und der 2te Code. Ich dachte das hat irgendwas mit KeyDown zu tun:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Tastendrücken
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_KeyDown(object sender, KeyEventArgs e)
            {
                 private void OnKeyUp(object sender, KeyEventArgs e)
            {
                Point location = this.button1.Location;
                switch (e.KeyCode)
                {
                    case Keys.Up:
                        this.button1.Location = new Point(location.X, location.Y - 1);
                        break;
    
                    case Keys.Down:
                        this.button1.Location = new Point(location.X, location.Y + 1);
                        break;
    
                    // Left + Right überlasse ich dir ;-) 
                }
            }
        }
    }
            }
    

    Syntaxfehler beim 2ten Code:
    } erwaret(Gleich nach private void button1_KeyDown(object sender, KeyEventArgs e)
    {)
    2. Fehler: Typ- Namespacedefinition oder Dateiende erwartet.

    Was könnte an den beiden nicht stimmen?
    Danke für die Hilfe.



  • Also mal ehrlich! Was glaubst du was
    Syntaxfehler beim 2ten Code: } erwaret

    bedeutet?

    Es bedeutet das Du ein } zuviel hast und dieses sehe ich im Code auf den ersten Blick.
    Ein wenig Einsatz von Deiner Seite wäre schön.



  • Das habe ich ja auch schon versucht.
    WEnn ich das { weggebe dann verlangt er von mir ein;
    und wenn ich ihm das gebe dann Kommt er mit so einer Fehlermeldung :
    "Tastendrücken.Form1.button1_KeyDown(object, System.Windows.Forms.KeyEventArgs)" ist nicht als abstrakt, extern oder partiell gekennzeichnet und muss daher einen Text deklarieren.

    Deswegen habe ich die Klammer gelassen.
    Und versucht das Problem anders zu Lösen.

    HAbe aber einfach keine Lösung gefunden 😞

    mfg



  • Nurmal als Tip.
    Gehe alle Offen durch und schaue ob es es eine geschlossene gibt.
    Wenn eine Überbleibt dann gehört die Weg oder noch eine dazu.
    Ich werde mich hüten dir zu sagen wo in Code2 denn ich ich denke jeder hier ist schon mal seine Klammmer durchgegangen wo es noch keine Hilfslinien gab.
    Somit wirst du es auch mal machen müssen.
    Sein mal Froh das es nur wenige Codezeilen sind.



  • wenn ich das richtig verstehe soll ich alle Klammer durchgehen und schauen ob alle geschlossen sind.
    bei
    {
    InitializeComponent();
    }
    Kann ich die Klammer nicht wegnehmen bzw öffnen. Und alle anderen sind geschlossen.

    Und wenn ich irgendwo eine dazugebe dann kommt dieser Fehler.
    Vll noch ein kleiner Tip 😃
    Ich verzweifle schon langsam.^^



  • Man kann keine Methoden in Methoden deklarieren...



  • Stimmt. 🙂
    Aber wenn ich eines der beiden weglösche dann kommen entweder ganz viele Fehlermeldungen. Oder es funktioniert nicht.
    Und wenn ich beides lasse dann kommt nur eine Fehlermeldnug



  • Lern erst einmal die Grundlagen und komm dann wieder. Mit copy & paste ist es nicht getan.



  • Kann ich ja so ziemlich.

    ICh habe das eh schon oft ausprobiert aber wenns nicht klappt dann fragt man halt um Hilfe.

    Ich bräuchte nur ne kurze ERklärung wie das geht.



  • Hellsgore schrieb:

    Servus,

    hilfreich ist es immer wenn man das bisher entwickelte und den Fehler postet...

    Es ist recht einfach...

    Du gehst hin und fängst das OnKeyDown/Up Event in deiner Applikation ab, fragst nach was für eine Taste gedrückt wurde und setzt die Location:

    private void OnKeyUp(object sender, KeyEventArgs e)
    {
        Point location = this.button1.Location;
        switch ( e.KeyCode )
        {
            case Keys.Up:
                this.button1.Location = new Point(location.X, location.Y - 1);
                break;
    
            case Keys.Down:
                this.button1.Location = new Point(location.X, location.Y + 1);
                break;
    
                // Left + Right überlasse ich dir ;-)
        }
    }
    

    Viel Spaß
    Hellsgore

    PS:

    Trios schrieb:

    Stimmt. 🙂
    Aber wenn ich eines der beiden weglösche dann kommen entweder ganz viele Fehlermeldungen. Oder es funktioniert nicht.
    Und wenn ich beides lasse dann kommt nur eine Fehlermeldnug

    Ist KEINE aussagekräftige Problembeschreibung.



  • Ok.
    WEnn ich den Code von Hellsgore nehme zeigt mir der Compiler keine Fehler mehr an, aber dafür macht er nichts wenn ich eine Taste drücke.

    Und bei dem Eigenschaftsfenster habe ich ich auch keine Einstellungen die aktiviert sein könnten gefunden.



  • Form.KeyPreview

    Wenn es das nicht war: Hast du wohl vergessen den EventHandler zu setzen -> Grundlagen



  • using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms;
    
    namespace Tastendrücken
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
     private void OnKeyUp(object sender, KeyEventArgs e) 
    { 
    
         Point location = this.button1.Location; 
    
        switch ( e.KeyCode ) 
        { 
            case Keys.Up: 
                this.button1.Location = new Point(location.X, location.Y - 10); 
                break; 
    
            case Keys.Down: 
                this.button1.Location = new Point(location.X, location.Y + 1); 
                break; 
    
        } 
       }
      } 
    
    }
    

    Das ist mein ganzer Code. Mit Form.KeyPreview weiß ich nicht wo das hingehören sollte und Eventhandler...
    ich habe mich zwar mit den Grundlagen beschäftigt aber das ist mir irgendwie entweder neu oder nicht wahr genommen.

    Ich würde nur gerne wissen wie das geht.



  • Ich kenne das hier persönlich nicht (hatte andere Bücher) aber es dürfte Dir weiterhelfen:

    http://openbook.galileocomputing.de/csharp/



  • Ich habe den EventHandler gesetzt aber er reagiert noch immer nicht.
    In diesem Buch habe ich nicht gefunden wie ich das mache.
    Ich habe jetzt auch Key.Preview auf true gesetzt aber er reagiert noch immer nicht auf meine Tastatureingaben.



  • In diesem Buch habe ich nicht gefunden wie ich das mache.

    Du sollst mit dem Buch erst einmal die Grundlagen lernen. Das Hirnlose rumbasteln bringt Dich nicht weiter und die Informationen die man Dir gibt nutzt Du nicht.



  • Ich habe zuhause eh so ein Buch neben mir liegen da stehen eh die ganzen Grundlagen drinne nur eben nicht das.
    Ich nutze die Zusatzinformationen schon.
    Ich habe mir erstens den Code von Hellsgore genommen ihn mir angeschaut und eingefügt. Dann habe ich den EventHandler gesetzt und nach dem Form.Keypreview geschaut und es dann auch gefunden.
    Aber es funktioniert irgendwie trotzdem nicht.


Anmelden zum Antworten