Übergabe von Variablen

happydigit

Grünschnabel
Hallo,

ich bin ein C#.NET Newbie und versuche im Moment ein kleines Programm zu schreiben.
Da ich mit der Sprache und mit MS Visual 2003 bisher nix am Hut hatte, stoße ich auf ein paar Eigenheiten.

Ich brauche also mal folgende Hilfe:

Ich kann ja unter Visual 2003 wunderbar Windows-Anwendung erstellen - der ganze Schmus ist dann in Form1.cs gespeichert.

Jetzt gibt es ein weitere CS-File wo irgendwas drin geschehen soll. Unter anderem, will/muss ich dort eine Variable benutzten, die in der Form1.cs in ein Textfeld eingeben wird.

In der zweiten CS (nennen wir sie auftrag.cs) sagt er mir dann immer:

The name 'number_orders' does not exist in the class or namespace 'RND_Auftrag.Auftrag'

So - beide CS-Files gehören aber zum Namespace RND_Auftrag!
Wer kann helfen? :)
 
Wie ist denn die Variable deklariert (public, protected, private)
Hast du es über Properties realisiert ?
 
Hi,

danke für Deine Hilfe:

Also die Variable ist mit

public int number_orders = 5;

in der Form1.cs deklariert.

Ich brauche diese Variable jetzt in einer Auftrag.cs in einer Funktion für eine Foreach-Schleife.
 
Ok public, ist also nach aussen sichtbar.
Du solltest die Variable über ClassInstanzObjekt.number_orders aus der anderen Klasse ansprechen können. Vorrausgesetzt natürlich das aufrufende Objekt kennt das andere Objekt.

Im eigenen Objekt kannst du es leicht über this.number_orders ansprechen.
 
Hä? :)

Also wie muss da der Quelltext dazu ausehen?
In der Auftrag.cs?

Vorrausgesetzt natürlich das aufrufende Objekt kennt das andere Objekt.

-> Genau das scheint ja das Problem zu sein, dass er es nicht kennt!

Irgendwie gibt es das ClassInst... nicht.
 
Zuletzt bearbeitet:
Ganz einfach:

In der Form1.cs gibt es ein Textfeld. Da gibt man eine Zahl ein. Dann drückt man auf ein Button und dann arbeitet das Programm - geht auch alles. Im Programmablauf springt das Programm in die Auftrag.cs.

In dieser Datei wird für eine For-Schleife die in dem Textfeld eingegebene Zahl benötigt.

thx :)
 
Ich versuch das ganze mal von der Struktur zu durchdenken.
Du hast ein Formular(form1) in dem der besagte Wert eingegeben wird.
Dann wird durch eine Benutzeraktion das zweite Objekt(Auftrag) aufgerufen, diese soll dann einen den eingegeben Wert bekommen und etwas berechnen/tuen.

Da gibt es verschiedene Möglichkeiten, für das Vorgehen.
Ich würd vermeiden vom Objekt Auftrag aus dem Formular den Wert auszulesen.
Sondern beim Aufruf des Auftragsobjekten, das instanzieren

KlasseAuftrag ObjektAuftrag = new KlasseAuftrag();

anschliessend beim Aufruf der Methode die die Aktion durchführt, entweder als Parameter zu übergeben, Eigenschaft setzen oder gleich die Konstruktor vom ObjektAuftrag überladen.
 
Vorsicht mit static, damit machst du die Variable zu eine Klassen variable, d.h. wenn du das Objekt (bestimmt das Formular) mehrmals instanzierst(erzeugst) ist die Variable in jeder Instanz gleich, egal in welchem Objekt du es setzt.
 

Neue Beiträge

Zurück