C# - Anfängerhilfe - Variable in Forms übergeben

.:L

0
Hallo Haboler,

ich möchte z.Zt. folgendes Umsatzen:

Der User kann über einen Button in Form 1 eine 2. Form aufrufen. In Form 2 kann der User ein paar Daten eingeben.
Code:
// Form1:
public string DatenF1
        {
            get { return Data; }
            set { Data= value; }
        }

Format2 f2 = new Format2();
f2.ShowDialog();

// In Format2:
Form1 f1 = new Form1();
f1.DatenF1= DatenF2;
Wenn ich mir das ganze im Debugger anschau sehe ich auch, dass "f1.DatenF1" korrekt gefüllt werden während ich in Format2 bin, komme ich in Format1 zurück (f2.showdialog) sind die Daten allerding wieder null.

Habe ich bei der Übergabe / Freigabe der Variablen irgendwas falsch gemacht?

habe dieses Beispiel genommen.

Gruß
L
 
Könntest du bitte alles posten? Ich für meinen Teil blicke da nicht ganz durch :D

mfg benediktibk
 
Nachdem das Form2 geschlossen ist, sind die Daten weg.

Ich habe das bei mir mit Dialogresult gelöst. Das funktioniert so:

In Form2 habe ich folgende Funktion:
Code:
public DialogResult ShowDialog(out Bgr[] col)
        {
            DialogResult ret;
            ret = this.ShowDialog();
            col = this.col;
            return ret;
        }

Mit out gebe ich an, was ich zurückgebe. In meinem Fall ist dies ein Array vom Typ Bgr. In Form2 habe ich eine Variable col und weise dem lokalen col, also dem, das ich zurückgebe, das globale col zu.

In Form1 ist sieht es dann so aus:

Code:
Form2 form2 = new Form2();
form2.ShowDialog(out col);

Wenn nun das Form2 geschlossen wird, hast du in col die Daten und kannst diese weiter verarbeiten.
 
  • Like
Reactions: .:L
Hi,

in der Dialogform form2 sollte es einen ok button (button1) geben, der über die ide mit der Eigenschaft DialogResult.OK versorgt wird.
Man kann auf die getter der gestarteten form zugreifen.

Code:
   public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 F= new Form2();
            if (F.ShowDialog() == DialogResult.OK)
            {
                MessageBox.Show(F.test);
            }
        }
    }
 
// dialog form
 
 
[SIZE=2]public partial class Form2 : Form
    {
        string vtest;
        public Form2()
        {
            InitializeComponent();
        }[/SIZE]
[SIZE=2]        public string test
        {
            get
            {
                return vtest ;
            }
        }[/SIZE]
[SIZE=2]        private void button1_Click(object sender, EventArgs e)
        {
            vtest = "test";
        }[/SIZE]
[SIZE=2]      
    }[/SIZE]
 
Danke für die Hilfe Angel, so funktionierts auch, habe es jetzt doch über Dialog result gelöst.

Und wenn ich schonmal dabei bin :rolleyes:

So sieht mein Rückgabedialog aus:
Code:
public DialogResult ShowDialog(out vars varTab)
        {
            DialogResult ret;
            ret = this.ShowDialog();
            varTab.actionName = textBox2.Text;
            varTab.actionName = textBox1.Text;
            return ret;
        }
"vars" ist folgende Klasse:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace thetime
{
    public class vars
    {
        public string actionName;
        public string fileName;
        public string execTime;
    }
}
Ich bekomme folgende Fehlermeldung:
Fehler 1 Verwendung des nicht zugewiesenen out-Parameters "varTab".

Fehler 2 Dem out-Parameter "varTab" muss etwas zugewiesen werden, bevor das Steuerelement die aktuelle Methode verlässt.

Was mache ich bei der Deklaration von varTab denn falsch?
 
Zurück
Oben