Problem mit Windows.Forms
-
Habe mir in VC++ 2005 Express zwei Forms erstellt und möchte nun das eine aus dem anderen als Dialog öffnen. Mein Problem: obwohl beide Forms dem selben Namespace angehören und die Codecompletion mir die Klasse der zweiten Form auch anbietet, kann ich diese nicht starten. Es kommt nur die Meldung, daß die zweite Form nicht im Namespace gefunden werden konnte (egal ob dieser explizit angegeben wird oder nicht).
Hier der Aufruf in der ersten Form:
private: System::Void btnAdd_Click(System::Object^ sender, System::EventArgs^ e) { DSSQ::AddServerDialog ^addDlg = gcnew DSSQ::AddServerDialog(); addDlg->ShowDialog(); }
Die zweite Form (in Auszügen):
#pragma once using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; namespace DSSQ { public ref class AddServerDialog : public System::Windows::Forms::Form { public: AddServerDialog(void) { InitializeComponent(); this->cbxNetcode->SelectedIndex = 0; this->cbxType->SelectedIndex = 0; } ...
Die Fehlermeldung:
------ Build started: Project: DSSQ, Configuration: Debug Win32 ------ Compiling... DSSQ.cpp c:\dokumente und einstellungen\jochen\eigene dateien\visual studio 2005\projects\dssq\dssq\Form1.h(264) : error C2039: 'AddServerDialog' : is not a member of 'DSSQ' c:\dokumente und einstellungen\jochen\eigene dateien\visual studio 2005\projects\dssq\dssq\Form1.h(264) : error C2065: 'AddServerDialog' : undeclared identifier c:\dokumente und einstellungen\jochen\eigene dateien\visual studio 2005\projects\dssq\dssq\Form1.h(264) : error C2065: 'addDlg' : undeclared identifier c:\dokumente und einstellungen\jochen\eigene dateien\visual studio 2005\projects\dssq\dssq\Form1.h(264) : error C2039: 'AddServerDialog' : is not a member of 'DSSQ' c:\dokumente und einstellungen\jochen\eigene dateien\visual studio 2005\projects\dssq\dssq\Form1.h(264) : error C2061: syntax error : identifier 'AddServerDialog' c:\dokumente und einstellungen\jochen\eigene dateien\visual studio 2005\projects\dssq\dssq\Form1.h(265) : error C2227: left of '->ShowDialog' must point to class/struct/union/generic type type is ''unknown-type''
Da ich GUI-Programmierung bisher nur in C# (VS2003) betrieben habe, und meine geringen C++-Vorkenntnisse auf die Konsole beschränkten, wäre ich für einen Tipp dankbar. Was könnte die Ursache sein?
-
Ich glaube, du bist im .net Forum besser aufgehoben.
-
Dieser Thread wurde von Moderator/in estartu_de aus dem Forum MFC (Visual C++) in das Forum C# und .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hast du die Referenzen denn korrkt gesetzt? Oder ist die Form im gleichen Projekt?
-
Die ist im gleichen Projekt.
Screenshot der Solution
-
Wäre immer noch für den entscheidenden Hinweis dankbar. Hab mal eine kleine Demo des Problems zusammengeklickt - vieleicht hat ja jemand einen Vorschlag wo mein Fehler liegt: http://joltan.net/temp/FormTest.zip
-
Ich hab mir mal dein Testprojekt gezogen und ehrlich gesagt, ich verstehe den Fehler auch nicht. Komme zwar aus der C# Ecke aber normalerweise ists der gleiche Namespace also müsste er auch die Klasse kennen. Was mich auch verwirrt, dass im Intellisense die KLasse angezeigt wird. Weiß nicht ob das C++ Intellisense anders arbeitet als das von C#, aber unter C# würde man die Klasse gar nicht sehen wenn sie durch die Modifier, Namespaces, etc. gar nicht verfügbar wäre. Ich weiß schon warum ich lieber C# programmiere unter .Net und nicht C++/CLI.
-
In C# habe ich auch keine Probleme damit. Für mich sieht das ganze nach einem Fehler in VC++ aus, aber mangels Erfahrung mit VC++ ist die Wahrscheinlichkeit doch größer, daß es irgendwie an mir liegt. Wäre schon der Hammer, wenn sowas als Bug durch die Betaphase schlüpfen würde...
-
Ok, Problem erkannt und gelöst (dank der MSDN Foren): Als jemand der primär in C# und Java programmiert hatte ich schlicht kein #include "Form2.h"; in Form1 hinzugefügt...
-
Hmm, das ist eben C++ *gg* Schreibst du C++/CLI eigentlich aus Interesse oder warum schreibst du dein .Net Programm nicht in C#?