C# Klassen und Objekte weiterreichen

Cortadillo

Mitglied
Hallo,

?AnfängerFrage?

innerhalb einer WinForm
lese ich eine Datenbank aus und übergebe die Werte
an Objekte einer entsprechenden Klasse.

Ausgehend von dieser WinForm soll durch einen ButtonClick eine neue WinForm
aufgerufen werden, die auf diese Klassenobjekte zugreifen kann.

Wo muss ich also die Klasse deklarieren, dass ich ich auf sie und deren Objekte zugreife?
Wie übergebe ich sinnvollerweise die Objekt-Infos?

Danke
 
Hi

Schau mal in die Tutorials-Sektion! Da gibts ein Tut. von Norbert Eder, zum Thema Datenaustausch zwischen zwei Forms. Das sollte deine Frage beantworten (vorausgesetzt, ich hab sie richtig verstanden :confused:)


PS:
[klugschei...]Klassen werden definiert nicht deklariert ;) [/klugschei...]
 
Du hast folgende Klasse:
C#:
public class Data 
{
  private string _data1 = null;
  private string _data2 = null;

  public string Data1 { get { return _data1; } set { data1 = value; } }
  public string Data2 { get { return _data2; } set { data2 = value; } }
}
Dieses instanzierst du in deinem ersten Formular und befüllst es mit Daten:
C#:
Data myData = new Data()
myData.Data1 = "test";
myData.Data2 ="fall";
Im zweiten Formular passt du den Konstruktor entsprechend an und setzt eine lokale Variable:
C#:
public class Form2 : System.Windows.Forms
{
  private Data _data = null;

  public Form2(Data data) 
  {
    _data = data;
  }
}
Und schon ist die Geschichte erledigt. Damit hast du ein Datenaustausch-Objekt, welches du auch entsprechend erweitern kannst.

PS: Ist mal schnell ohne Test runtergeschrieben. Sollte aber dennoch passen.
 
danke der schnellen Hilfen,

hab da nen weitergehendes Problem:

Klasse definiert
mit drei Properties, ähnlich deinem Beispiel.

Klasse[] klasse;
Code:
Komponentenklasse[] KompKlasse;

--> hier liegt wohl mein Problem: das Arraymuss ja initialisiert werden in ausreichender Zahl.
das geschieht innerhalb einer Methode.
Code:
KompKlasse = new Komponentenklasse[_spalten];
-->die Verwendung von Array scheint nicht die beste Lösung zu sein, oder?

was muss ich machen, um aus andrer Methode auf diese Objekte zuzugreifen?
-->anders gefragt, wie schaffe ich es, dass ObjektKlassen innerhalb eines Projektes
persistent sind?


Dies habe dann noch vor
Aber da kommt ne NullReferenceException (siehe unten)
Code:
private void flowChart2_BoxDblClicked(object sender, BoxMouseArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                foreach (Komponentenklasse box in _KompKlasse)
                {
                    if (box.KomponentenName == e.Box.Text)
                    {
                        Form frm3 = new Form3(box);
                        frm3.Show();
                        frm3.Text = e.Box.Text;
                    }
                }

                //frm3.na
                
              
             //   flowChartNeu=neu FlowChart();
                
            }
        }

System.NullReferenceException was unhandled
Message="Object reference not set to an instance of an object."
-->use the "new" keyword
 
Zuletzt bearbeitet:
Irgendwie verstehe ich nicht genau was du meinst.

Du übergibst doch das Objekt "box" an die Form3. Warum weißt du dann ausserhalb trotzdem noch etwas von diesem Objekt zu? Die hast du ja in Form3 dann verfügbar und kannst die Zuweisungen ja daher in Form3 selbst behandeln.
 
was an der Stelle passieren soll:

es gibt eine Form, die einige Boxen beinhaltet:

wenn eine Box per rechte Maustaste angeklickt wird, soll eine neue Form geöffnet werden.
Dieser Form soll das Objekt aus KomponentenKlasse übergeben werden, welches denselben
Namen hat wie der Text der Box

und hierbei streikt der Debugger, weil die Objekte schon nicht mehr "vorhanden" sind.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück