string von class nach form übermitteln

hallo,
ich hoffe ich blamiere mich jetzt nicht komplett...

ich programmiere mit hilfe von visual studio2010 in csharp
ein programm.
Dafür habe ich einmal die Benutzeroberfläche (Form1.cs[Entwurf]) erstellt.
Die Funktionsweisen habe ich in (Form1.cs) geschrieben und was dann letzendlich ausgeführt wird, wird in "Lib_Wolfrom.cs" erledigt.
Meine frage ist, wie bekomme ich jetzt einen string den ich in "Lib_Wolfrom.cs" erstellt habe wieder zurück in die Form, damit ich den text dort in einer textBox anzeigen kann?

ich habe jetzt 2 tage lang gesucht und sämtliches gelesen, aber mir hat nie was weiter geholfen...
ich hoffe ich habe mich klar ausgedrückt, so das dalles verständlich ist.

grüße
mathias
 
Form.cs:
Code:
private void button16_Click(object sender, EventArgs e)
        {

            
            //"string name" 2 Stellen hochgerutscht
            Lib_Wolfrom vorschlag = new Lib_Wolfrom(double.Parse(h1z.Text),
                                       double.Parse(h1kkd.Text),
                                       double.Parse(h1fkd.Text),
                                       ...
                                       double.Parse(sd.Text),
                                       name.Text,
                                       double.Parse(nm.Text),
                                       double.Parse(npa.Text),
                                       double.Parse(za.Text),
                                       double.Parse(k.Text)
                                      );
            
        }



Lib_Wolfrom.cs:
Code:
...
public void vorschlag(double _h1z,
                                   double _h1kkd,
                                   double _h1fkd,
                                   double _h1b,
                                   double _h1sf,
                                   double _h1d,
                                   double _h2z,
                                   double _h2kkd,
                                   ...
                                   double _za,
                                   double _k
                                  )
        {
            //Array zum abspeichern der kombinationen
            string[] varianten = new string[moeglichkeiten_int];
            for (int n = 1; n < m; n++)
            {
                varianten[n] = "  " + "   h1=  " + arr2D[n, 0] + "     h2:  " + arr2D[n, 1] + "     s: " + arr2D[n, 2] + "     p: " + arr2D[n, 3] + "  \n ";
            }

            //Stringbuilder fügt alle möglichen Kombinationen in eine Zeichenkette für die Ausgabe
            StringBuilder Ausgabetext = new StringBuilder();

            for (int n = 1; n < m; n++)
            {
                Ausgabetext.Append(varianten[n]);
            }

            string Ausgabetext_varianten_fertig = Ausgabetext.ToString();
            
            
            //Anzeige der alternativen Kombinationen in einem Fenster
            System.Windows.Forms.MessageBox.Show("Für die gewählten Parameter erfüllen folgende Varianten die Bedingungen: \n   \n " + Ausgabetext_varianten_fertig + " \n  \n Übernehmen Sie eine Alternative Variante");

bis jetzt läuft das ganze noch über eine MessageBox, nur ab und zu wird die zu lang und man kann nicht mehr auf "OK" klicken.

deswegen hätte ich gern die ausgabe der ergebenisse ( in "Ausgabetext_varianten_fertig" abgelegt") in der textbox in der form, da man mit der scrollen kann
 
Zuletzt bearbeitet:
Was macht denn deine Funktion in LibWolfrom? Erstellt diese nur den String oder macht die ganz andere Sachen und der String ist sozusagen eine Statusmeldung zwischendurch?
Beim ersten Fall solltest du nämlich durchaus mit einem Return arbeiten können, der zweite Fall ist dann doch schon umständlicher.

Ein wenig Beispielcode könnte hier aber wirklich hilfreich sein, dir die passende Antwort zu geben
 
meine funktion in lib_wolfrom macht die gesamte rechnung, das ist aber zu viel code um den hier rein zu stellen und am ende kommt der string Ausgabetext_varianten_fertig in dem alles ordentlich geschrieben und gelistet ist.
und genau diesen string will ich ausgeben können.

habe es auch schon mit return versucht, nur irgendwie hab ich den nie mein ziel erreicht...
 
Statt
Code:
public void vorschlag()
kannst du auch

Code:
public string vorschlag()
verwenden.

Ungefähr so:
Code:
...
public string vorschlag(double _h1z,
                                   double _h1kkd,
                                   double _h1fkd,
                                   double _h1b,
                                   double _h1sf,
                                   double _h1d,
                                   double _h2z,
                                   double _h2kkd,
                                   ...
                                   double _za,
                                   double _k
                                  )
        {
            //Array zum abspeichern der kombinationen
            string[] varianten = new string[moeglichkeiten_int];
            for (int n = 1; n < m; n++)
            {
                varianten[n] = "  " + "   h1=  " + arr2D[n, 0] + "      h2:  " + arr2D[n, 1] + "     s: " + arr2D[n, 2] + "     p: " + arr2D[n,  3] + "  \n ";
            }

            //Stringbuilder fügt alle möglichen Kombinationen in eine Zeichenkette für die Ausgabe
            StringBuilder Ausgabetext = new StringBuilder();

            for (int n = 1; n < m; n++)
            {
                Ausgabetext.Append(varianten[n]);
            }

            return Ausgabetext.ToString();
}

In deinem Klick-Ereignis von dem Button kannst du nun auf den Rückgabewert zugreifen und diesen z.B. in einer Textbox ausgeben.
 
der erste/zweite code ist wieder für form.cs
und der dritte für lib_wolfrom.cs?

und wie rufe ich dann den text in der form.cs auf? bzw greife drauf zu?
 
Ein bisschen Eigeninitiative wäre vielleicht nicht schlecht... :rolleyes:

Form.cs:
Code:
private void button16_Click(object sender, EventArgs e)
        {

            
            //"string name" 2 Stellen hochgerutscht
            Lib_Wolfrom vorschlag = new Lib_Wolfrom(double.Parse(h1z.Text),
                                       double.Parse(h1kkd.Text),
                                       double.Parse(h1fkd.Text),
                                       ...
                                       double.Parse(sd.Text),
                                       name.Text,
                                       double.Parse(nm.Text),
                                       double.Parse(npa.Text),
                                       double.Parse(za.Text),
                                       double.Parse(k.Text)
                                      );

        textBox1.text = vorschlag.vorschlag();
            
        }
Lib_Wolfrom.cs:
Code:
...
public string vorschlag(double _h1z,
                                   double _h1kkd,
                                   double _h1fkd,
                                   double _h1b,
                                   double _h1sf,
                                   double _h1d,
                                   double _h2z,
                                   double _h2kkd,
                                   ...
                                   double _za,
                                   double _k
                                  )
        {
            //Array zum abspeichern der kombinationen
            string[] varianten = new string[moeglichkeiten_int];
            for (int n = 1; n < m; n++)
            {
                varianten[n] = "  " + "   h1=  " + arr2D[n, 0] + "      h2:  " + arr2D[n, 1] + "     s: " + arr2D[n, 2] + "     p: " + arr2D[n,  3] + "  \n ";
            }

            //Stringbuilder fügt alle möglichen Kombinationen in eine Zeichenkette für die Ausgabe
            StringBuilder Ausgabetext = new StringBuilder();

            for (int n = 1; n < m; n++)
            {
                Ausgabetext.Append(varianten[n]);
            }

            return Ausgabetext.ToString();            
  
}
oder wie auch immer deine Lib_Wolfrom aufgebaut ist.
 
Alle 3 Code-Blöcke sind für Lib_Wolfrom.
In der Form.cs rufst du ja die Funktion bereits auf, etwa so:
Code:
Button1_Click(...)
{
     lib.funktionsname(parameter);
}

Du kannst nun einfach statt
lib.funktionsname(parameter); folgendes schreiben:
textbox1.Text = lib.funktionsname(parameter);

Wichtig ist, dass die Funktion dann auch einen String zurück gibt, das wurde aber weiter oben in nem anderen Thread bereits beschrieben.


Ach und Beispielcode heißt nicht unbedingt, dass du den kompletten Code posten sollst, sondern wichtige Stellen. Oder du machst einen Beispielcode, der dein Problem veranschaulicht.
 
ich würde es am liebesten allein schaffen,
aber das klappt leider nicht.
ich geb mein bestes um mit zu arbeiten...

ich erhalte jetzt 2 fehler meldungen:
ungültiges token "(" in klasse, struktur oder schnittstellenmemberdeklaration
ungültiges token "=" in klasse, struktur oder schnittstellenmemberdeklaration

beide beziehen sich auf Form.cs
Code:
textBox1.text = vorschlag.vorschlag();
 
Deine Lib.cs:

Code:
public class foo {
    public string bar(string arg1, string arg2) {
        return arg1 + arg2;
    }
}
Deine Form.cs:

Code:
private Button1_Click(..) {
    foo x = new foo();
    textBox1.text = x.bar("A", "B");
}
somit wird die Methode "bar" aus der Klasse "foo" aufgerufen.
Den Rückgabewert schreiben wir in die "textBox1". Diese sollte natürlich schon existieren.
 
schon mal zwischendurch danke für eure hilfe!
aber noch klappt es nicht ganz...

mein betroffener teil der form.cs sieht jetzt so aus:
Code:
        private void button16_Click(object sender, EventArgs e)
        {

            
            //"string name" 2 Stellen hochgerutscht
            Lib_Wolfrom vorschlag = new Lib_Wolfrom(double.Parse(h1z.Text),
                                       double.Parse(h1kkd.Text),
                                       double.Parse(h1fkd.Text),
                                       double.Parse(h1b.Text),
                                       double.Parse(h1sf.Text),
                                       double.Parse(h1d.Text),
                                       double.Parse(h2z.Text),
                                       double.Parse(h2kkd.Text),
                                       double.Parse(h2fkd.Text),
                                       double.Parse(h2b.Text),
                                       double.Parse(h2sf.Text),
                                       double.Parse(h2d.Text),
                                       double.Parse(pn.Text),
                                       double.Parse(pz.Text),
                                       double.Parse(pkkd.Text),
                                       double.Parse(pfkd.Text),
                                       double.Parse(pb.Text),
                                       double.Parse(psf.Text),
                                       double.Parse(pd.Text),
                                       double.Parse(sz.Text),
                                       double.Parse(skkd.Text),
                                       double.Parse(sfkd.Text),
                                       double.Parse(sb.Text),
                                       double.Parse(ssf.Text),
                                       double.Parse(sd.Text),
                                       name.Text,
                                       double.Parse(nm.Text),
                                       double.Parse(npa.Text),
                                       double.Parse(za.Text),
                                       double.Parse(k.Text)
                                      );


            Lib_Wolfrom x = new Lib_Wolfrom();
            textBox1.Text = x.vorschlag();



und der betroffene teil der Lib:
Code:
        public string vorschlag(double _h1z,
                                   double _h1kkd,
                                   double _h1fkd,
                                   double _h1b,
                                   double _h1sf,
                                   double _h1d,
                                   double _h2z,
                                   double _h2kkd,
                                   double _h2fkd,
                                   double _h2b,
                                   double _h2sf,
                                   double _h2d,
                                   double _pn,
                                   double _pz,
                                   double _pkkd,
                                   double _pfkd,
                                   double _pb,
                                   double _psf,
                                   double _pd,
                                   double _sz,
                                   double _skkd,
                                   double _sfkd,
                                   double _sb,
                                   double _ssf,
                                   double _sd,
                                   string _name,
                                   double _nm,
                                   double _npa,
                                   double _za,
                                   double _k
                                  )
        {
...

            //Array zum abspeichern der kombinationen
            string[] varianten = new string[moeglichkeiten_int];
            for (int n = 1; n < m; n++)
            {
                varianten[n] = "  " + "   h1=  " + arr2D[n, 0] + "     h2:  " + arr2D[n, 1] + "     s: " + arr2D[n, 2] + "     p: " + arr2D[n, 3] + "  \n ";
            }

            //Stringbuilder fügt alle möglichen Kombinationen in eine Zeichenkette für die Ausgabe
            StringBuilder Ausgabetext = new StringBuilder();

            for (int n = 1; n < m; n++)
            {
                Ausgabetext.Append(varianten[n]);
            }
            
            System.Windows.Forms.MessageBox.Show("varianten \n berechnet");
            //string Ausgabetext_varianten_fertig = Ausgabetext.ToString();

            return Ausgabetext.ToString();

aber irgendwo ist immernoch was falsch...

im moment heißt es:
keine überladung für die vorschlag-methode nimmt 0 argumente an. und das bezieht sich auf:
Code:
x.vorschlag();

aus form.cs
Code:
            Lib_Wolfrom x = new Lib_Wolfrom();
            textBox1.Text = x.vorschlag();


ps.: ich hab gerade echt nen brett vorm kopf :(
 
Du solltest dir vielleicht erstmal Grundlagen anlesen ;)

Was sofort auffällt ist deine Form.cs.

Erstmal würde ich die Instanz von lib_wol... nicht in der button Funktion erstellen sondern weiter oben in der Klasse Form, um diese Instanz in der gesamten Form nutzen zu können.

Wieso machst du eigentlich 2 Instanzen auf? Und hast du überhaupt einen Konstruktor in deiner Klasse Lib_..., mit den ganzen Parametern?

Ich denke eher, es sollte so lauten:

Code:
            Lib_Wolfrom x = new Lib_Wolfrom();

In der Button Funktion machst du dann
Code:
            textBox1.Text = x.vorschlag(double.Parse(h1z.Text),
                                       double.Parse(h1kkd.Text),
                                       double.Parse(h1fkd.Text),
                                       double.Parse(h1b.Text),
                                       double.Parse(h1sf.Text),
                                       double.Parse(h1d.Text),
                                       double.Parse(h2z.Text),
                                       double.Parse(h2kkd.Text),
                                       double.Parse(h2fkd.Text),
                                       double.Parse(h2b.Text),
                                       double.Parse(h2sf.Text),
                                       double.Parse(h2d.Text),
                                       double.Parse(pn.Text),
                                       double.Parse(pz.Text),
                                       double.Parse(pkkd.Text),
                                       double.Parse(pfkd.Text),
                                       double.Parse(pb.Text),
                                       double.Parse(psf.Text),
                                       double.Parse(pd.Text),
                                       double.Parse(sz.Text),
                                       double.Parse(skkd.Text),
                                       double.Parse(sfkd.Text),
                                       double.Parse(sb.Text),
                                       double.Parse(ssf.Text),
                                       double.Parse(sd.Text),
                                       name.Text,
                                       double.Parse(nm.Text),
                                       double.Parse(npa.Text),
                                       double.Parse(za.Text),
                                       double.Parse(k.Text));
 
DANKE ich habs auch gerade wie schuppen von den augen fallen sehen. es klappt jetzt :)

wünsche euch einen schönen tag und noch mal vielen dank für die hilfe!
 
Zurück
Oben