woher kennt denn deine neue klasse die form1 klasse?
Ankündigung
Einklappen
Keine Ankündigung bisher.
User helfen User - Programmieren
Einklappen
X
-
Weiß nich gerade wie es bei C# ist, aber hast du eine Instanz der Klasse angelegt?
Dann solltest du damit auch auf die Funktion zugreifen können.
Als Beispiel: Wenn die Klasse Test heißt, dann darfst natürlich net einfach Test.setdbGridDataSource machen, sondern vorher eine Instanz der Klasse anlegen und damit arbeiten.
Kommentar
-
okay ich versuchs ma anders.. das ich von meiner klasse eine instanz brauche, ist mir klar.
Die Form1 wird aber ja von der Program.cs gestartet mit der folgenden main methode:
Spoiler:{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
Form1 ist eine partial Class.. Beim erstellen wird ja hier kein name angegeben für die instanz.. wie greife ich jetzt auf methoden meiner instanz von form1 zu?
Form1 und meine zusätzliche klasse befinden sich btw im selben namespace
Also auch wenn ich meine eigene Klasse static mache, ändert das nichts, ich komme ja gar nicht erst soweit die methode dahinzuschreiben bevor die Entwicklungsumgebung meckert:
Spoiler:Fehler 1 Für das nicht statische Feld, die Methode oder die Eigenschaft "WindowsFormsApplication2.Form1.setDBGridDataSourc e()" ist ein Objektverweis erforderlich.
Woher nehmen wenn nicht stehlen? :/
Kommentar
-
Ich hab das jetzt nicht genau verstanden, aber ich schätze mal, dass sich das auf Fenster bezieht, die von einer anderen Form aufgerufen werden. Ich will ein Objekt der klasse aber nicht unbedingt in der form erstellen, sondern auch schon in dem hauptprogramm, was die form öffnet..
ich überleg mir mal ob ich das konzept nicht doch wieder über den haufen werf.
Kommentar
-
Schonmal mit delegates und events versucht? Das wäre zumindest sauberer Stil und besser als direkt Funktionen von einer anderen Form aufzurufen. Kann dir mit C# leider net direkt helfen, da ich selber nur sehr wenig damit gemacht habe.
Aber schau mal hier nach Delegates:
http://tuts4you.de/component/content/article/71-aenderungen-von-subform-an-mainform-uebergeben
Eine andere Idee wäre eine Art Splashscreen. Du startest also nicht mit Form1, sondern mit einem kurzen Splashscreen oder gar einer Klasse ohne UI und initialisierst dort Form1.
Kommentar
-
Generell verstehe ich nicht warum er in einer anderen klasse methoden der form steuern will.
hört sich für mich so an, als ob er in die falsche richtung auslagert.
ich an deiner stelle würde die logik die in form1 steckt in eine andere klasse auslagern und diese klasse dann in der form1 klasse nutzen...
vielleicht hab ich es auch einfach nicht verstanden was du genau willst.
Kommentar
-
spielt wohl für ihn keine große rolle, etwas richtig zu machen, wenn er sich sowieso mit winforms beschäftigtZitat von maaanuuueeelGenerell verstehe ich nicht warum er in einer anderen klasse methoden der form steuern will.
hört sich für mich so an, als ob er in die falsche richtung auslagert.
ich an deiner stelle würde die logik die in form1 steckt in eine andere klasse auslagern und diese klasse dann in der form1 klasse nutzen...
vielleicht hab ich es auch einfach nicht verstanden was du genau willst.
Kommentar
-
Ich habe jetzt meinen Techniker für Elektrotechnik angefangen, wir arbeiten unter anderem mit C++.
Ich habe eine Programm mit mehreren Unterprogrammen(?).
Url: http://codepad.org/J4D7PbGe
Nun habe ich das Problem das ich in Zeile: 41 nicht zurück in die "int main()" funktion zurück komme. Bzw mein Visual Studio kompiliert mir das ganze nicht mehr und sagt:
"Fehler 1 error C3861: "main": Bezeichner wurde nicht gefunden."
Woran liegt das? Ich hab jetzt ewig über google gesucht, aber ich denke ich benutze einfach die falschen Begriffe um eine Lösung zu finden.
Kommentar
-
Richtig, die hatte ich Testweise mal eingefügt, um es mit einem goto zu probieren, was leider auch nicht funktionierte.Zitat von tfsnZeile 51 mal entfernen
Das entfernen hat leider nichts gebracht.
Ist es überhaupt möglich von einem "unterprogramm" in das "main()" zurück zu wechseln? Wenn ja wie? Wenn nicht wie dann? :/
Kommentar
Kommentar