Mit Tastatur Button Bewegen
-
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: } erwaretbedeutet?
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ß
HellsgorePS:
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 FehlermeldnugIst 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:
-
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.
-
Hallo,
Ich habe zuhause eh so ein Buch neben mir liegen da stehen eh die ganzen Grundlagen drinne nur eben nicht das.
Du wirst selten in einem Buch eine Lösung finden die exakt zu Deinem Problem passt. Oft ist es viel mehr Transferwissen. Irgendwo in Deinem Buch werden sicherlich Events behandelt. Das zu überspringen weil da nicht KeyUp vorkommt wäre falsch.
schau mal hier:
http://openbook.galileocomputing.de/csharp/kap23.htmpublic partial class Form1 : Form { public Form1() { InitializeComponent(); this.KeyPreview = true; this.KeyUp += new KeyEventHandler(Form1_KeyUp); } void Form1_KeyUp(object sender, KeyEventArgs e) { MessageBox.Show(e.KeyCode.ToString()); } }
http://www.rothmichael.de/cpp/233606.zip
Ich persönlich fand dieses Buch völlig Witzlos:
C#-Kochbuch | ISBN: 9783897214644aber gestehe ein ähnliches für PHP zu verwenden. In den Kochbüchern wird zu konkreten Problemen Lösungen geboten. Wenn man in der Sprache aber ein wenig Erfahrung hat kommt man sich ein wenig veralbert vor.
Noch ein Tipp:
Wenn Du im Eigenschaftsfenster in der Ansicht der Events bei KeyUp einen doppelklick machst, erstellt die IDE eine Routine für Dich mit fertig eingetragenen Event.
-
Vielen Dank es hat geklappt.
Es tut mir Leid das ich mich so blöd angestellt habeIch verwende dieses : Jetzt lerne ich Visual C# 2008.
Jetzt habe ich auch so ziemlich verstanden was ich falsch hatte
Nur ich wusste nicht was ich mit dem Zip Ordner anfangen sollte^^
-
Es tut mir Leid das ich mich so blöd angestellt habe
Das ist die falsche Einstellung. Du hast nicht aufgegeben und dazu gelernt. Und darum alleine geht es.