Joerg1990 Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Hallo Leute, eine Frage an euch, ich hab ein Problem und iwie ein Brett vorm Kopf. Also dabei sei gesagt, ich bin noch blutiger Anfänger was das programmieren anbelangt. Ich hab eine WindowsForms Anwendung mit zwei Forms. Und zwar hab ich eine EingabeForm und eine Ausgabe Form und ein Klasse in der die Eingaben berechnet werden, in einer Methode. Ich hab das Problem, das ich die Eingaben, die in einem Array gespeichert sind ich nicht aus der Klasse rausbekomme, der übergibt die nicht, wie mache ich das sinnvollerweise ? Vielen Dank für eure Antworten. Zitieren
chrixko Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Was genau meinst du mit: Er übergibt sie nicht? Zeig uns vielleicht mal den entsprechenden Quelltext. Zitieren
Joerg1990 Geschrieben 27. Januar 2010 Autor Geschrieben 27. Januar 2010 (bearbeitet) Also es geht einfach darum, allgemein, wie kann ich aus Form1 ein Array in eine andere Form übergeben, zB. in Form2 in der ich dieses Array nacher wieder in einer ListBox ausgeben möchste. Ist sicher ganz simpel nur ich hab grad iein Logikfehler. Wenn ihr mir das sagen könnten wäre das lieb. Bearbeitet 27. Januar 2010 von Joerg1990 Zitieren
LadyPreis Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 dann zeig doch mal den Quelltext, damit wir den Fehler finden können. Denn das Übergeben eines Arrays ist normalerweise von der Syntax her nicht anders, als wie wenn ich eine einzelne Variable übergebe. Der Fehler muss also woanders liegen Zitieren
Joerg1990 Geschrieben 27. Januar 2010 Autor Geschrieben 27. Januar 2010 Hey, hier ist der Teil aus dem code. So das ist der Teil aus Form1. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Funktionseingabe : Form { public Funktionseingabe() // Form1 wird erstellt, Standardkonstruktor, wird automatisch ausgeführt. { InitializeComponent(); } string[] nullstellen = new string[8]; public ErgebnisseÜbergeben ErgebnisseÜbergeben = new ErgebnisseÜbergeben(); private void button1_Click(object sender, EventArgs e) { Funktionsausgabe fa2 = new Funktionsausgabe(); fa2.Text = Text; fa2.Show(); if (radioButtonsin.Checked == true) { int x = -1; Funktionsausgabe fa = new Funktionsausgabe(); fa.Text = Text; fa.Show(); decimal Ausgabe; for (int i = 0; i <= 7; i++) { Rechnung sinus = new Rechnung(textBoxVerschiebung.Text, textBoxAmplitude.Text, textBoxSchwingung.Text, textBoxPhasenverschiebung.Text); Ausgabe = sinus.Nullstellensinus(); nullstellen = Ausgabe.ToString(); ErgebnisseÜbergeben.einlesen(nullstellen); } } } } Form 2 hier: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Funktionsausgabe : Form { public ErgebnisseÜbergeben ErgebnisseÜbergeben = new ErgebnisseÜbergeben(); public string[]ausgabe = new string[7]; public Funktionsausgabe() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Funktionseingabe fi = new Funktionseingabe(); for (int x = 0; x <= 1; x++) { listBoxNullstellen.Items.Add(ErgebnisseÜbergeben.einlesen(fi.nullstellen[x])); } } } } Hier dir Form 3, hier eine Klasse für Ergebnisübergabe: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { #region public class ErgebnisseÜbergeben { string nullstelle; public string[] ergebnis = new string[7]; public void einlesen(decimal[] Ergebnisse) { Funktionsausgabe fa = new Funktionsausgabe(); for ( int i=0; i <= 6; i++) { ergebnis = Ergebnisse[0].ToString(); fa.ausgabe = ergebnis; } } public string ausgeben() { return this.ergebnis[0]; } } #endregion } Das war alles, ich bekomme einfach das ergebnis nicht ausgegebenm, die Rechnungen funktionieren 100% Der Code ist natürlich bissel gekürzt, bei Rückfragen, fragen, ich wäre euch unendlich dankbar für Hilfe. Zitieren
LadyPreis Geschrieben 28. Januar 2010 Geschrieben 28. Januar 2010 Bitte beim nächsten Mal die Code-Tags verwenden. Sehe ich das richtig, dass du mit der Form Funktionseingabe beginnst, und das Ganze dir dann in Funktionsausgabe anzeigen lassen willst? Wenn ja, ist es klar, dass es nicht funktioniert: Du klickst in der Funktionseingabe auf den Button. Dann wird ein neues Objekt von Funktionsausgabe erstellt und angezeigt. Dann klickst du in Funktionsausgabe auf den Button, damit ja alles auch ausgegeben wird. Und hier sit der Fehler: du erstellst ein neues Objekt vom Typ Funktionseingabe. In diesem Objekt wird auch dein Array nullstellen neu erstellt. allerdings werden bei dir in dieses array noch keine werte geschrieben. Wenn du dann in Funktionsausgabe über dieses Array iterierst (wo du sowieso nur die ersten 2 Werte nimmst), ist es klar, dass er darin keine Werte findet. Das Problem ist hier nicht die Übergabe eines Arrays, sondern eher die fehlende Kapselung und ein gewisses Logikproblem innerhalb deiner Anwendung. Zitieren
Joerg1990 Geschrieben 28. Januar 2010 Autor Geschrieben 28. Januar 2010 Hallo, ja danke dir, ich weiß ich hab da nen paar Fehler gemacht, ich muss sagen ich muss erstmal lernen gescheiht zu programmieren, wie gesagt noch blutiger Anfänger, aber besten Dank. Zitieren
lbm1305 Geschrieben 28. Januar 2010 Geschrieben 28. Januar 2010 Entweder du übergibst das Array direkt an die Zielklasse oder das Array wird in einer dritten Klasse, nennen wir es mal DatenTransferObject (DTO), gekapselt. Bei diesem Szenario muss aber dann das komplette DTO übergeben werden. ACHTUNG: PseudoCode. 1. Szenario // Constructor Ziel-Klasse public TargetClass (string[] values) { // } //Aufruf für die Übergabe string[] strArray = new string[8]; TargetClass target = new TargetClass(strArray); target.DoSomething(); 2. Szenario // Constructor DTO public DTO (string[] values) {} public string[] GetArray() { return //; } // Constructor TargetClass public TargetClass (DTO dto) { _dto = dto; } public string[] GetArray() { return _dto.GetArray(); } // Implementation string[] strArray = new string[8]; DTO dto = new DTO(strArray); TargetClass target = new TargetClass(dto); target.GetArray(); Zitieren
Joerg1990 Geschrieben 2. Februar 2010 Autor Geschrieben 2. Februar 2010 Vielen Dank, hab das selbst gelöst, war einfach nur ein Logikfehler meinerseits und halt Unkenntniss, diese ist jedoch beseitigt worden, zumindest was das Problem anbelangt. mfg Jörg Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.