Autor |
Beitrag |
FrEEzE2046
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 13:03
Hallo,
ich bekomme immer die Fehlermeldung "unerwartetes Token vor ';'" und kann mir nicht richtig erklären, woran das liegen soll.
Das ganze ist innerhalb einer Klasse (Osziloskop). Es soll das per Property referenzierte PictureBox-Steuerelement ein Ereignis innerhalb meiner Klasse zugewiesen bekommen ...
Bitte um Hilfe
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| property System::Windows::Forms::PictureBox^ DrawPlane { void set( System::Windows::Forms::PictureBox^ Plane ) { this->_draw_plane = Plane; this->_draw_plane->Paint += gcnew System::Windows::Forms::PaintEventHandler( this, &Osilloskop::Osilloskop_Paint ); } }
void Osilloskop_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e); |
Der Fehler tritt bei der Event-Routine auf. Lasse ich den Parameter PaintEventArgs weg, dann geht es komischerweise (nur dann eben die Event-Registrierung nicht)
PS: Ist zwar C++/CLI, aber der Fehler hängt ja mit der .NET-Klasse zusammen Moderiert von Kha: Topic aus WinForms verschoben am Mi 27.05.2009 um 13:37
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.05.09 13:36
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 13:42
Naja, es ist halt so eine Sache.
Ist es denn überhaupt möglich, was ich hier mache?
Ich habe einen internen Pointer auf eine PictureBox. Wenn diese (per Property) zugewiesen wird, soll die untenstehende Funktion (Oszilloskop_Paint) dem Paint-Event der PictureBox zugewiesen werden. Geht das überhaupt so? Ich bin mir nicht sicher, nicht dass dort der Fehler liegt.
Btw. Ich benutze das Visual Studio 2008 TS-Edition
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.05.09 13:49
Ich kann mir zwar kein Szenario vorstellen, in dem eine PictureBox-Property wirklich Sinn macht  aber theoretisch - warum nicht?
Naja, versuche ich mal halt mal am C++/CLI-Raten: Warum besitzt denn der Eventhandler keinen Body? Außerdem sieht der mir nach einer Instanzmethode, Osilloskop::Osilloskop_Paint aber nach dem Verweis auf eine statische Methode aus.
_________________ >λ=
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 13:58
Also, dass ganze ist tatsächlich innerhalb einer Klasse (Oszilloskop).
Mein Vorhaben:
Die Klasse Oszilloskop hat Methoden zur Berechnung der Ablenkempfindlichkeit eines Kathodenstrahles (spielt eigentlich keine Rolle^^). So, nun habe ich ein Property, dass einen Verweis auf eine PictureBox enthält, weil auf dieser dann die Parabelbahn der Elektronen gezeichnet wird - soweit klar?
Ich suche nach einer Möglichkeit dies zu realisieren.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.05.09 14:12
Dann würde ich die Klasse von der PictureBox gar nichts wissen lassen, sondern lediglich eine Paint-Methode mit System.Drawing.Graphics-Parameter implementieren  .
_________________ >λ=
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 14:14
Kha hat folgendes geschrieben : | Dann würde ich die Klasse von der PictureBox gar nichts wissen lassen, sondern lediglich eine Paint-Methode mit System.Drawing.Graphics-Parameter implementieren . |
Ja, soweit bin ich mittlerweile ja auch, aber grundsätzlich:
Die Ableitung von System::Windows::Forms::Form ist referenziert doch auch ihre events, obwohl die Klasse noch keine Instanz hat ...
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.05.09 14:28
Öhm, nö  .
C#-Quelltext 1: 2: 3: 4:
| private void InitializeComponent() { [...] this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint); |
_________________ >λ=
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 14:34
Doch^^
C#-Quelltext 1: 2: 3: 4: 5:
| void InitializeComponent(void) { [...] this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); } |
Ich sehe da jetzt keinen zu großen Unterschied zu meiner Variante.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.05.09 14:43
Achso, jetzt sehe ich es erst: In /CLI werden Delegate.Target und Delegate.Method anscheinend getrennt übergeben. Dein erster Code war also doch richtig, aber das stimmt trotzdem nicht:
FrEEzE2046 hat folgendes geschrieben : | Die Ableitung von System::Windows::Forms::Form ist referenziert doch auch ihre events, obwohl die Klasse noch keine Instanz hat ... |
_________________ >λ=
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 14:52
Kha hat folgendes geschrieben : | Achso, jetzt sehe ich es erst: In /CLI werden Delegate.Target und Delegate.Method anscheinend getrennt übergeben. |
Ja, sry. Ich wusste nicht, dass das in C# anders ist. Aber was genau macht die Ableitung von Form denn nun anders, als ich in meiner Klasse. Im Grnud will ich ja das selbige erreichen.
Hast du eine Idee?
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.05.09 16:58
Hab doch geschrieben, dass dein Code richtig sein sollte  . Sieht ja wirklich genau gleich aus.
Aber ich dachte, dass der Fehler sowieso nicht dort, sondern bei der Definition der Methode auftritt?
_________________ >λ=
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 17:49
|
|
FrEEzE2046 
      
Beiträge: 109
Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
|
Verfasst: Mi 27.05.09 18:28
Ich bein Vollidiot. Der Namespace, in den ich die Klasse geschrieben habe, hieß exakt genau so wie die Header-Datei selbst. Das hat den Fehler verursacht ...
Trotzdem danke ich dir für deine Mühen.
|
|