| Autor |
Beitrag |
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 09.03.10 19:04
Hallo liebes C#-Forum!
Ich bin in C# noch lange nicht wieder so gut, wie in Delphi, wo ich denke dass ich mich da wieder einigermaßen eingearbeitet habe.
Ich möchte gerne entweder die Fenster alle einzeln oder in einer Serie erscheinen lassen, was ich im Auswahl-Fenster festlegen möchte.
Bei diesem Code gibt er mir folgend Fehlermeldung auf die if-Abfrage:
Für das nicht statische Feld, die Methode oder die Eigenschaft "VisuelleWahrnehmung_VersuchNr2.Form_Auswahl.FensterSerie" ist ein Objektverweis erforderlich.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| private void buttonWeiter_Click(object sender, EventArgs e) { if (Form_Auswahl.FensterSerie) (new FormWTS_LVT()).Visible = true; else Hide(); } |
Die Variable FensterSerie ist boolean
Später angefügt:
Also noch mal zur genaueren Erklärung: Ich habe ein Auswahl-Formular, auf dem ich eben durch eine Combo-/DropdownBox die einzelnen Fenster einzeln auswählen kann oder eben sagen kann, dass er alle nacheinander in einer Serie durchlaufen soll.
- Und je nachdem soll er dann halt das nächste aufmachen oder einfach nur auf die Form_Auswahl zurückkehren.
Zuletzt bearbeitet von ffgorcky am Di 09.03.10 19:49, insgesamt 2-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.03.10 19:47
Form_Auswahl dürfte ja eine Klasse sein, davon musst Du erst einmal eine Instanz erzeugen, mit der Du arbeiten kannst.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ffgorcky 
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 09.03.10 19:51
Naja - wie man doch denke ich erraten kann - ist die Form_Auswahl das Anfangsfenster.
Also ist doch dort eine Instanz von vorhanden auf die ich eben zurückgreifen möchte.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.03.10 19:56
ffgorcky hat folgendes geschrieben : | | Naja - wie man doch denke ich erraten kann - ist die Form_Auswahl das Anfangsfenster. |
Erstens: Wenn Leute, die Dir helfen wollen, irgendwas raten müssen, stimmt wohl etwas mit Deiner Problembeschreibung nicht.
Zweitens: Aus der Fehlermeldung und der darin enthaltenen Angabe der Eigenschaft "VisuelleWahrnehmung_VersuchNr2.Form_Auswahl.FensterSerie" rate ich nicht nur, sondern bin mir verdammt sicher, dass Form_Auswahl der Name einer Klasse ist und nicht der Name einer Instanz.
ffgorcky hat folgendes geschrieben : | | Also ist doch dort eine Instanz von vorhanden auf die ich eben zurückgreifen möchte. |
Auf Instanzen greift man aber nunmal nicht über den Klassennamen zu. Wie sollte das auch gehen, es kann je beliebig viele Instanzen derselben Klasse geben. Ich rate jetzt aber nicht, in welchen Variable oder in welchem Feld Du die Instanz abgelegt hast ...
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ffgorcky 
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 09.03.10 20:01
Ich habe da ja leider noch nicht so viel Ahnung von, wie das genau (in C#) geht, aber ich denke mal, dass sich da evtl. irgendwas mit parent oder so machen lassen müsste - also die aufrufende Fenster-Klasse. - Auf genau die möchte ich ja zurückgreifen.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.03.10 20:04
Ah, jetzt kapier ich, was Du meinst
Auf die aktuelle Instanz, in der Du Dich befindest, kannst Du mittels this (also z.B. this.FensterSerie) zugreifen. Wobei Du das meistens sogar weglassen kannst und z.B. nur FensterSerie schreiben.
//edit: Oder ist Dein Code jetzt doch nicht in der Auswahl-Form? 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Di 09.03.10 20:05
Wenn du .NET Richtlinien für Namen beachtest - z.B. hinsichtlich Groß- und Kleinschreibung von Klassen und Variablen -, gibt es etwas weniger Missverständisse. Jürgen
|
|
ffgorcky 
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 09.03.10 20:16
Christian S. hat folgendes geschrieben: | //edit: Oder ist Dein Code jetzt doch nicht in der Auswahl-Form? |
Nein, der ist genau in einem von dieser aufgerufenen Formular und es soll eben festgestellt werden, ob denn jetzt einfach das nächste Fenster aus dieser festen Fenster-Folge aufgerufen werden soll, oder wieder zum aufrufenden Haupt-Form zurückgekehrt werden soll.
JüTho hat folgendes geschrieben : | | Wenn du .NET Richtlinien für Namen beachtest - z.B. hinsichtlich Groß- und Kleinschreibung von Klassen und Variablen -, gibt es etwas weniger Missverständisse. Jürgen |
Entschuldigung, ich weiß jetzt leider gerade nicht, welche Richtlinien ich da misachtet habe.
Ich bin ja auch irgendwie Delphi mehr gewöhnt.
|
|
ffgorcky 
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 09.03.10 20:25
Oder meinst Du, ich sollte eher das momentan aufgerufene Form schließen und dann aber kurz vorher noch eine Prozedur in der aufrufenden Haupt-Form starten?
Dann müsste ich ja nur der aufrufenden Haupt-Form mit übergeben, von welcher die Prozedur denn nun gerade aufgerufen wurde.
Edit: Aber ich muss ja so oder so auf eine bestimmte Instanz der Hauptform zugreifen.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.03.10 20:27
Ich würde der aufgerufenen Form beim Aufruf bereits mitteilen, ob sie hinterher eine neue Form aufrufen soll oder ob sie zur Auswahl-Form zurückkehren soll.
Du kannst dafür einen Konstruktor erstellen, der diese Information als Parameter erhält. Dann brauchst Du keinen Zugriff mehr auf die Auswahl-Form.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ffgorcky 
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 09.03.10 20:31
Ja, das wäre natürlich auch eine Möglichkeit, in jedem aufgerufenen Fenster eine einzelne Variable zu machen, in der dann steht, ob zum Auswahl-Formular zurückgekehrt werden soll oder nicht.
Und wie kann ich das bei dem Aufruf mit übergeben?
Muss ich dann dafür eine Public-Variable in jedem aufgerufenen Form anlegen?
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Di 09.03.10 20:33
ffgorcky hat folgendes geschrieben : | JüTho hat folgendes geschrieben : | | Wenn du .NET Richtlinien für Namen beachtest - z.B. hinsichtlich Groß- und Kleinschreibung von Klassen und Variablen -, gibt es etwas weniger Missverständisse. Jürgen |
Entschuldigung, ich weiß jetzt leider gerade nicht, welche Richtlinien ich da misachtet habe.
Ich bin ja auch irgendwie Delphi mehr gewöhnt. |
Ich weiß es auch nicht, aber die bisherige Diskussion ging auch in der Hinsicht etwas Hin und Her. Form_Auswahl wird eindeutig als Klassenname verstanden, wie auch Christian angenommen hat.
Du musst (im Gegensatz zu Delphi) Groß- und Kleinschreibung beachten. Grundgedanke: Klassen werden groß geschrieben, Variable klein.
Gruß Jürgen
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.03.10 20:38
ffgorcky hat folgendes geschrieben : | Und wie kann ich das bei dem Aufruf mit übergeben?
Muss ich dann dafür eine Public-Variable in jedem aufgerufenen Form anlegen? |
Nein, wie gesagt: Du fügst einen Konstruktor ein, dem das als Parmater übergeben wird. Innerhalb der Form solltest Du das in einem privaten Feld ablegen, welches in besagtem Konstruktor gefüllt wird.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|