Problem bei Variablenübergabe

Hallo alle zusammen,

habe ein Problem mit variablenübergabe zwischen zwei Formularen.

Ich habe FormA und öffne FormB.
Von FormA werden variablen an FormB übergeben ausgewertet und sollen nun an FormA zurück geschickt werden.
Da ist das Problem, er übernimmt die variable nur, wenn ich FormA.Showdialog ausführe.
Es muss doch aber möglich sein ohne diese ShowDialog diese zu übergeben. Da FormA ja schon im Hintergrund geöffnet ist.

Im Einzelnen:
PHP:
Formular FormA 
################################################################
String a; 

    public string A 
        { 
            get { return this.a; } 
            set { this.a = value; } 
        } 


private void result()
{
FormA  formA = new FormA;                  // Instanz von FormA bilden
FormB formb = new FormB(fromA);       // Instanz v FormA an FormB übergeben
formb.s_C = blablabla;                         // vari an FromB Übergeben
formb.ShowDialog;                               // FormB Aufrufen
}
####################################################################
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
//Formular FormB


// In FormB wird nur in der proc "auswerten" die übergebene var s_C bearbeitet und zurück an FormA vari A gesendet. So zumin mein vorhaben. Geht aber nicht wenn ich FormA nicht mit ShowDialog öffne. 

public partial class FormB : Form 
{ 
   int c ;

   // Übergabe vari von FormA
   public string  s_C 
   { 
     get { return this.c; } 
     set { this.c = value; } 
    } 
   
// Vari für FormA  Referenz
private readonly FormA  var_a; 

// Konstruktor von FormB
public FormB(FormA pA)  “Übergabe FormA via Referenz !” 
 { 
    InitializeComponent(); 
    this.var_a = pA; 
 } 

privat void auswerten () 
{ 
   int F;
   F = s_C + s_C; 
   var_a.A = F; 
   this.close;                       // schliesse FormB  -> geh zurück zu schon geöffneten FormA
   var_a.ShowDialog();  
// dann geht es, ohne geht es nicht   WARUM? Hat es was mit den Load Event zu tun? 
Was ich nicht versteh ist, ich übergebe von FormA an FormB eine Referenz von FormA, somit müsste ich doch vollen zugriff auf die varis von FormA haben, oder hab ich einen Denkfehler

}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Zuletzt bearbeitet:
Hallo davejarjarbinks,

irgendwie blicke ich bei deinem Code nicht so richtig durch:
- Kannst du mal das Durcheinander mit den Bezeichern FormA, FormB, frm_Start, frm_FormA und frm_Alarm auflösen?
- Wann wird denn überhaupt "auswerten()" aufgerufen?
- Bei "auswerten()": Wenn "a" die FormA sein soll, wo ist dann das "C" deklariert?

Prinzipiell sollte das Vorgehen schon passen. Aber, wie gesagt, mit den Codefragmenten kann ich nicht viel anfangen.

Gruß
MCoder
 
Hallo MCoder,

danke erstmal für deine Hilfe, sorry für den Code, habe ihn oben nocheinmal überarbeitet. Hoffe du siehst jetzt besser durch.
( Syntaktisch vielleicht nicht richtig, soll er auch nicht, nur Logisch !

Für dich nur noch mal kurz zum Verständniss, mir geht es nur darum zu wissen warum wird die vari in FormA übergeben wenn ich FormA.ShowDialog aufrufe aber nicht, wenn ich es weglasse und einfach die vari an die schon existierende Referenz übergebe...... und FormB schliesse

Danke im Vorraus
 
Hi.

Du hast doch schon eine FormA. Dann kreierst du noch eine FormA und übergibst diese an FormB. Die erste und zweite Instanz von FormA haben nichts miteinander zu tun. Was du wolltest ist vermutlich das:
C#:
private void result()
{
   FormB formb = new FormB(this); // diese Instanz von FormA an FormB übergeben
  formb.s_C = blablabla;                         // vari an FromB Übergeben
  formb.ShowDialog;                               // FormB Aufrufen
}
Gruß
 
Hallo deepthroat,

du hast natürlich absolut recht, das klein wörtchen "this" hat mir alles versaut.
Ich habe eine neue Referenz angelegt, hatte sie ja aber schon die ganze Zeit. :rolleyes:

Tausend Dank.
 

Neue Beiträge

Zurück