| Autor |
Beitrag |
Fate
Hält's aus hier
Beiträge: 3
|
Verfasst: Sa 06.12.08 15:01
Hi, ich arbeite mit hilfe eines Buches und habe eine Anwendung nachempfunden
bisher klappte alles nur das einlesen der Mousekoordinaten und in der Titelleiste der Andwendung auszugeben klappte nicht. Auch in einem textfeld erscheinte nichts. Kann mir jemand helfen wo ich den fehler mache
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| namespace WindowsFormsApplication1 { public partial class myform : Form { public myform() { InitializeComponent(); }
private void textBox1_TextChanged(object sender, EventArgs e) {
}
private void btnKopieren_Click(object sender, EventArgs e) { txtKopie.Text = txtOriginal.Text; }
private void btnBeenden_Click(object sender, EventArgs e) { Application.Exit(); } private void myform_MouseMove(object sender, MouseEventArgs e) { string koordinate = "X=" + e.X + " / Y=" + e.Y; if (sender == this) { this.Text = "Form / " + koordinate; txtKopie.Text = koordinate; } else if (sender == btnKopieren) this.Text = "Koopieren / " + koordinate; else this.Text = "Beenden / " + koordinate; }
private void Form1_Load(object sender, EventArgs e) {
} } |
Liebe Grüße
Fate
Moderiert von Christian S.: C#-Tags hinzugefügt
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 06.12.08 15:14
Hallo und  !
Ist denn die myform_MouseMove Methode auch dem entsprechenden Ereignis der Form zugewiesen?
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.12.08 15:20
Hast du denn die Ereignisse richtig zugewiesen? Oder hast du den Quelltext einfach nur abgetippt, inklusive der Zeile C#-Quelltext 1:
| private void btnKopieren_Click(object sender, EventArgs e) | zum Beispiel?
Deinem Quelltext nach zu urteilen benutzt du MS Visual Studio, also Visual C#. Entweder klickst du doppelt auf den Button um das Ereignis zuzuweisen und den Quelltext dafür erstellen zu lassen oder du schaust rechts unten unter Eigenschaften. Dort siehst du einen Button mit einem Blitz als Symbol und dem Hinweis Ereignisse. Wenn du darauf klickst und der Button btnKopieren ausgewählt ist im Formular, dann sollte dort als erste Zeile stehen Click und rechts daneben btnKopieren_Click.
Ist das so?
|
|
Fate 
Hält's aus hier
Beiträge: 3
|
Verfasst: Sa 06.12.08 15:24
Hallo vielen Dank erstmal.
Nun eigentlich möchte ich nur, sobald meine Mouse über die Form geführt wird, dieses im Titel meiner Windowsanwendung gezeigt bekommen...
Ich habe in dem Buch bisher alles der reihe nach durchgearbeitet. Es sind relativ simple anwendungen auch das verknüpfen der ereignisse mit den Buttons. Nur jetzt bezieht sich dieses Event ja nciht auf ein Click ereigniss wie beim button sondern auf die Form ansich...
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.12.08 15:34
Fate hat folgendes geschrieben : | | Nur jetzt bezieht sich dieses Event ja nciht auf ein Click ereigniss wie beim button sondern auf die Form ansich... |
Klick auf eine freie Stelle des Formulars, so das keine Komponente mehr markiert ist, oder wähle rechts direkt unterhalb von Eigenschaften "myform System.Windows.Forms.Form" aus.
Danach klickst du dann auf den Button mit dem Blitz und stellst unter MouseMove deine Methode myform_MouseMove ein. Diese sollte dort zur Auswahl stehen, du kannst sie auch manuell eintragen.
Mit einem Doppelklick rechts neben MouseMove kannst du den Eventquelltext erstellen lassen und der Quelltext öffnet sich mit dem Textcursor an der richtigen Stelle. Da du myform_MouseMove aber schon deklariert hast, musst du das nur noch eintragen, sonst wird bei einem Doppelklick eine neue Methode myform_MouseMove_1 erstellt.
|
|
Fate 
Hält's aus hier
Beiträge: 3
|
Verfasst: Sa 06.12.08 15:35
ah super vielen dank das wars mit der zuweisung bei dem Blitz. danke
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Sa 06.12.08 15:59
Und dieser Fehler ist noch niemandem aufgefallen:
Das geht natürlich überhaupt nicht, weil e.X und e.Y jeweils int sind:
C#-Quelltext 1:
| string koordinate = "X=" + e.X + " / Y=" + e.Y; |
So kann es gehen:
C#-Quelltext 1:
| string koordinate = "X=" + e.X.ToString() + " / Y=" + e.Y.ToString(); |
Aber dafür gibt es auch eine vorgefertigte Methode:
C#-Quelltext 1:
| string koordinate = String.Format("X={0} / Y={1}", e.X, e.Y); |
Jürgen
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 06.12.08 16:14
JüTho hat folgendes geschrieben : | | Das geht natürlich überhaupt nicht, weil e.X und e.Y jeweils int sind: |
Ohne es gutzuheißen: Doch, das geht.
_________________ >λ=
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Sa 06.12.08 16:25
Kha hat folgendes geschrieben : | | Doch, das geht. |
Nanu, unter welchen Umständen wird denn automatisch konvertiert? Sorgt der Plus-Operatur des Strings dafür?
Ich habe es noch nie so gemacht, weil es für mich selbstverständlich war. Dann formuliere ich es mal so:
Und dieser Fehler ist noch niemandem aufgefallen:
Das geht natürlich überhaupt nicht, weil e.X und e.Y jeweils int sind:
Im Interesse der Typsicherheit sollte es nicht so gemacht werden, weil e.X und e.Y jeweils int sind:
Jürgen
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 06.12.08 16:55
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Sa 06.12.08 17:18
| Zitat: | | Nanu, unter welchen Umständen wird denn automatisch konvertiert? Sorgt der Plus-Operatur des Strings dafür? |
Scheint eher Compiler Magie zu sein.
Wenn man sich den generierten IL anguckt scheint eine string Verkettung mit + in einen Aufruf von string.Concat umgewandelt zu werden. Also aus
C#-Quelltext 1:
| string koordinate = "X=" + e.X + " / Y=" + e.Y; |
wird
C#-Quelltext 1:
| string koordinate = string.Concat(new object[] {"X=",e.X," / Y=",e.Y}); |
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 06.12.08 17:25
Ralf Jansen hat folgendes geschrieben : | | Wenn man sich den generierten IL anguckt scheint eine string Verkettung mit + in einen Aufruf von string.Concat umgewandelt zu werden. |
Das ist ein Implementierungsdetail und hat auf die Operator-Auflösung keine Auswirkung. Aber du hast natürlich Recht, dass es keine System.String.op_Addition-Methode gibt, sondern sich der Compiler wie bei den primitiven Typen die Operatoren einfach "dazudenkt". Die mutmaßlichen Signaturen habe ich oben gepostet.
_________________ >λ=
|
|