Zugriff von einer Klasse auf WinForms-Elemente



  • Hallo,
    ich versuche gerade mit WinForms (Visual C++ 2008 Express Edition) ein simples Programm zu schreiben.
    Ich habe im moment zwei Forms: Form1 und Test.
    Über einen Button wird das Fenster Test geöffnen
    und gleichzeitig bei der Klasse schnelltest (in der datei "Tests.h" die
    Methode TestStart() aufgerufen, die den Wert eines Prozessbalkens ändern soll..
    Mein Problem: wie greife ich auf die Elemente aus den Forms zu?

    z.B. steht in der Form-Datei "Test.h": (Namespace Reacttest)

    this->progressBar1->Value = 1;
    

    ich habs mit Folgendem versucht:

    void TestStart(){
    
    		Reacttest::Test->progressBar1->Value = 1;
    	}
    

    meine Klasse:

    #include "stdafx.h"
    #include "config.h"
    #include "iostream.h"
    #include "time.h"
    #include "Test1.h"
    
    class schnelltest {
    private: 
    	float	afRundenzeit[50];
    	int		aiRunde[50];
    	int		aiAbgefragteZahl[50];
    	int		abzufragendeZahlen[50];
    	float	fZeitSeitRundenbeginn;			//Wird zur Zeitmessung benutzt!
    	// Wird initialisiert
    	int		iRunden;
    	int		iMoeglichkeiten;
    	//Für schleife
    	int i;
    
    public: 
    	schnelltest(){}
    	void Testvorbereiten(int iRundenAngabe, int iMoeglichkeitenAngabe){
    	//Setzten der Einstellungen
    		iRunden = iRundenAngabe;
    		iMoeglichkeiten = iMoeglichkeitenAngabe;
    		for(i=0;i>=iRundenAngabe;i++){		
    			srand(time(NULL));
    			abzufragendeZahlen[i] = rand() % iMoeglichkeitenAngabe + 1;
    
    		}
    	}
    
    	void TestStart(){
    
    		Reacttest::Test->progressBar1->Value = 1;
    	}
    
    };
    

    Ich bin, wie man wahrscheinlich sehen kann, noch C++ Anfänger und brauch hier dringen hilfe 😞
    Ich freue mich über paar Tipps und Hilfe freuen 🙂



  • Kann mir denn keiner hier helfen? 😞



  • Du bist im falschen Forum. Hier wird C++ gesprochen Forms ist hier:
    http://www.c-plusplus.net/forum/viewforum-var-f-is-58.html



  • saschaxx schrieb:

    ich versuche gerade mit WinForms (Visual C++ 2008 Express Edition) ein simples Programm zu schreiben.

    Grundsätzlich: Dies wäre dann C++/CLI, nicht C++ (C++ kann mit dem .Net Framework, und damit WinForms nicht umgehen).

    Dazu kommen noch andere Faktoren:

    saschaxx schrieb:

    meine Klasse:

    #include "stdafx.h"
    #include "config.h"
    #include "iostream.h"
    #include "time.h"
    #include "Test1.h"
    

    Wenn C++/CLI sich an C++ anlehnt, gibt es weder "iostream.h" noch "time.h", sondern <iostream> und <ctime> - Beide im Namensraum std.

    saschaxx schrieb:

    Ich habe im moment zwei Forms: Form1 und Test.
    Über einen Button wird das Fenster Test geöffnen
    und gleichzeitig bei der Klasse schnelltest (in der datei "Tests.h" die
    Methode TestStart() aufgerufen, die den Wert eines Prozessbalkens ändern soll..
    Mein Problem: wie greife ich auf die Elemente aus den Forms zu?

    Über eine Instanz des Forms. Ich sehe in den geposteten Code aber nicht die Stelle an der du die Form erzeugst, ich würde aber erwarten das du dessen Instanz in einer Variable ablegst, und diese auch übergibst, wenn man darauf zugreifen soll.

    So: "Reacttest::Test" wirst du auf die Klasse, nicht aber die Instanz zugreifen können. Und über die Klasse kannst du nur auf statische Funktionen/Member zugreifen, was hier sicherlich nicht sinnvoll ist.

    saschaxx schrieb:

    Ich bin, wie man wahrscheinlich sehen kann, noch C++ Anfänger und brauch hier dringen hilfe 😞

    Wenn du C++ Anfänger bist, würde ich dir erst einmal zu normalen C++ Konsolenprogrammen (in MSVC unter dem Projekttyp "Win32 Konsolenanwendung" zu finden; Bitte hacken bei "Leeres Projekt" reintun) raten.

    Wenn du damit fit bist, kannst du auf die Sprache C++/CLI wechseln (sofern du wirklich .Net Programme mit C++ entwickeln willst, ich würde hier eher zu C# raten), dies hat noch einige Syntaktische Elemente und Schlüsselwörter mehr.

    cu André


Anmelden zum Antworten