Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben (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 von Joerg1990
Geschrieben

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

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

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();

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...