[C++ Windows Forms VS 2010 Express] Wie kann ich zwei Forms miteinander vernetzen

YannikTold

Mitglied
Hallo Forengemeinde,
ich habe Visual Studio C++ 2010 Express Editions und möchte zwei Fenster(Forms) über einen menuStrip vernetzen,
sodass ich, wenn ich auf einen bestimmten Menüpunkt klicke, sich ein neues Fenster öffnet.
HINWEIS: ES SOLL KEINE MESSAGE ODER EIN DIALOG SEIN JEDIGLICH EIN VON MIR ERSTELLTES FENSTER!
Ich habe es folgendermaßen Probiert:
Code:
#pragma once
#include <iostream>

using namespace std;
namespace My10FingerEASY {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;
...
Code:
...
#pragma endregion
	private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
			 }
	private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
			 }
private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 get("uebungenUndTexte.h");
		 }
};
}
Es kam folgende Fehlermeldung heraus:
Fehlermeldung hat gesagt.:
Fehler 1 error C2784: "_Pair_data<_Idx,std::pair<_Ty1,_Ty2>>::_Type std::tr1::get(std::pair<_Ty1,_Ty2> &)": template-Argument für "std::pair<_Ty1,_Ty2> &" konnte nicht von "const char [19]" hergeleitet werden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 225
Fehler 2 error C2784: "_Pair_data<_Idx,std::pair<_Ty1,_Ty2>>::_CType std::tr1::get(const std::pair<_Ty1,_Ty2> &)": template-Argument für "const std::pair<_Ty1,_Ty2> &" konnte nicht von "const char [19]" hergeleitet werden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 225
Fehler 3 error C1083: Datei (Include) kann nicht geöffnet werden: "Übungen und Texte - 10 Finger EASY.h": No such file or directory C:\Users\User\documents\visual studio 2010\Projects\10 Finger EASY\10 Finger EASY\Übungen und Texte - 10 Finger EASY.cpp 2

Über eine schnelle Antwort würde ich mich freuen.
Grüße
Yannik
 
alsoooo,

das ist sehr einfach.

du hast also einen menüpunkt und dazu das Click-Event, Vorher legst du die zweite Form natürlich erstmal an.
du schrein´bst im Event folgendes:

Formname formvarname = new Formname();
formvarname.Show();

Formname = gleich name der zweiten FOrm (intelsense erscheint immer, wenn du ihn richtig eingibtst...)
formvarname = gebe der Referenz einen beliebigen namen.
weiter mußt du nichts tun.

noch ein tip der immer klasse ist:
deklariere vorher im Code eine globale Formvariabel der selben Form:

public static Formname formvarname2;

wenn du jetzt folgendes schreibst

Formname formvarname = new Formname();
formvarname2 = formvarname;
formvarname2.Show();

kannst du jeder zeit aus der ersten Form folgendes tun:

formvarname2.Close(); oder
formvarname2.Hide();
also alle funktionen aus der ersten form aufrufen.
 
So. Noch 2 Fehler die ich nicht ganz verstehe:
Der Code:
Code:
#pragma endregion
	private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
			 }
	private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
			 }
private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 "uebungenUndTexte.h"; "ueut" = new uebungenUndTexte();
			 "ueut".Show();
		 }
};
}
Fehlermeldung hat gesagt.:
Fehler 1 error C2061: Syntaxfehler: Bezeichner 'uebungenUndTexte' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 2 error C2228: Links von ".Show" muss sich eine Klasse/Struktur/Union befinden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228

Kann mir jemand dabei bitte helfen?
Gruß
YannikTold

EDIT: Syntaxfehler ist Rechtschreibfehler, richtig? Durch Änderung in: "uebungenUndTexte.h"ist der Syntaxfehler: Zeichenfolge gekommen.
 
Zuletzt bearbeitet:
Was für eine Sprache verwendest du bitte zum Programmieren?

"ueut" = new uebungenUndTexte();

Es gibt glaub keine Sprache der Welt in der das irgendein gültiges Konstrukt aufweist. Du weisst einem String-Literal einen Wert zu, huh?

Und was um alles in der Welt soll das absolut alleine gelassene und sinnfreie Literal
"uebungenUndTexte.h"; ? Soll das etwa #include "uebungenUndText.h" heissen?
 
alsoooo,

das ist sehr einfach.

du hast also einen menüpunkt und dazu das Click-Event, Vorher legst du die zweite Form natürlich erstmal an.
du schrein´bst im Event folgendes:

Formname formvarname = new Formname();
formvarname.Show();

Formname = gleich name der zweiten FOrm (intelsense erscheint immer, wenn du ihn richtig eingibtst...)
formvarname = gebe der Referenz einen beliebigen namen.
weiter mußt du nichts tun.

noch ein tip der immer klasse ist:
deklariere vorher im Code eine globale Formvariabel der selben Form:

public static Formname formvarname2;

wenn du jetzt folgendes schreibst

Formname formvarname = new Formname();
formvarname2 = formvarname;
formvarname2.Show();

kannst du jeder zeit aus der ersten Form folgendes tun:

formvarname2.Close(); oder
formvarname2.Hide();
also alle funktionen aus der ersten form aufrufen.

@ Cromon
Nach diesem Schema habe ich gearbeitet.
 
Ja schon, aber dir ist schon bewusst, dass Variabelnnamen in C++ (und auch in jeder anderen mir bekannten Programmiersprache) nicht in " " stehen?

Code:
int a = 2;
// und nicht
int "a" = 2;
 
So besser?

Code:
#pragma endregion
	private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
			 }
	private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
			 }
private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 uebungenUndTexte ueut = new uebungenUndTexte();
			 ueut.Show();
		 }
};
}

Das Resultat:
Fehlermeldungen hat gesagt.:
Fehler 1 error C2065: 'uebungenUndTexte': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 2 error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ueut' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 3 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 4 error C2061: Syntaxfehler: Bezeichner 'uebungenUndTexte' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 5 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
Fehler 6 error C2228: Links von ".Show" muss sich eine Klasse/Struktur/Union befinden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228

EDIT: Mit int:
Code:
#pragma endregion
	private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
			 }
	private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
			 }
private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
			 int uebungenUndTexte ueut = new uebungenUndTexte();
			 ueut.Show();
		 }
};
}

Fehlermeldungen hat gesagt.:
Fehler 1 error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ueut' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 2 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 3 error C2061: Syntaxfehler: Bezeichner 'uebungenUndTexte' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
Fehler 4 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
Fehler 5 error C2228: Links von ".Show" muss sich eine Klasse/Struktur/Union befinden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
 
Zuletzt bearbeitet:
Kurze Frage: Kennst du dich denn mit C++ aus? Falls nicht (so scheint es mir) würde es vielleicht mehr Sinn machen mal mit C# anzufangen.

Aber für dein Problem:
uebungenUndTexte (ein schlechter Name für eine Klasse) ist wohl in einer anderen Datei deklariert, also musst du diese auch includieren.
 

Neue Beiträge

Zurück