Autor Beitrag
C#David
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 31.05.18 14:10 
Hey Leute,

ich möchte Variablen verschiedenen Typs zwischen einzelnen Forms austauschen, dass heißt deren Werte auslesen beziehungsweise ändern. Dazu habe in eine seperate Klasse, in dem Fall "class Functionality" angelegt und darin eine struct "TFTest" deklariert. Deren Member möchte ich nun in Form2 beschreiben und in Form3 auslesen.

Leider muss ich zum Auslesen der Struct-Member in Form3 immer ein neues Objekt der Struct anlegen, womit ja automatisch alle Werte neuinitialisiert werden. Wie kann ich das Problem lösen? Eine Möglichkeit es mit get/set-Properties für structs zu lösen, habe ich leider nicht gefunden. Vielen Dank!

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
namespace Forms_Application
{
  public class Functionality
  {
    public struct TransferTest
    {
      public bool transfertestbool1;
      public int transfertestint1;
      ...
    }
  }

  public partial class Form2 : Form
  {
    private void button1_Click (object sender, EventsArgs e)
    {
       TF_Test _TFTest;
       _TFTest.transfertestbool1 = true;
       _TFTest.transfertestint1 = 1;
       bool gettransfertestint1 = _TFTest.transfertestbool1; //funktionmiert!
    }
  }

  public partial class Form3 : Form
  {
    private void button2_Click (object sender, EventsArgs e)
    {
       //TF_Test _TFTest; //dann Fehlermeldung: "Verwendung des nicht zugewiesenen Feldes...."
       TF_Test _TFTest = new TFTest(); //initalisiert alle Werte neu       
       bool gettransfertestint1 = _TFTest.transfertestbool1; 
    }
  }
}


Zuletzt bearbeitet von C#David am Do 31.05.18 14:42, insgesamt 2-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20397
Erhaltene Danke: 2215

Win 10
C# (VS 2017)
BeitragVerfasst: Do 31.05.18 14:18 
Hallo,

bitte füge Deinem Beitrag C#-Tags hinzu, um den Quelltext entsprechend zu markieren.

Danke!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 31.05.18 14:33 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#David Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 31.05.18 14:45 
An der Stelle gibt es sehr wahrscheinlich noch ein Verständnisproblem. Wenn ich einen Konstruktor für die Klasse/Struct erstelle, kann ich doch nur Werte initialisieren und beim Aufrufen nicht abrufen, oder? Besipielcode zum Verständnis wwär super. Vielen Dank!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 31.05.18 14:54 
- Nachträglich durch die Entwickler-Ecke gelöscht -
C#David Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 31.05.18 21:58 
Okay....ich habe mir jetzt die Problemstellungen unter den Link www.bitel.net/dghm11...on_von_2_Forms.html) angeschaut. Es scheint mir am sinnvollsten Eine Funktion in der Klasse "Functionality" anzulegen mit der alle Member der Struct beschrieben werden. Indem ich ein Object vom Typ "Funxtionality" an den Konstuktor der aufrufenden Formklasse übergebe, kann ich dann diese Funktion in Form2 und Form3 aufrufen. Nur weis ich immer noch nicht wie man die Werte der Struct dann von Form 2 und 3 auslesen kann. Get/Set-Properties gibt es ja schließlich nicht für structs! Oder sind doch Events die Lösung? Vielen Dank!!...ich bekomme da einfach keine Klarheit rein (:
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4426
Erhaltene Danke: 904


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.05.18 22:40 
Zitat:
Get/Set-Properties gibt es ja schließlich nicht für structs!

Das ist Unsinn. Das Verhalten von structs und classes ist fast identisch. Verwechsele die Bedeutung von structs nicht mit derbedeutung von structs in ganz anderen Sprachen. Der eine entscheidende Unterschied in .Net ist das struct beim zuweisen kopiert (struct = Wertetyp) werden während bei classes ein Verweis auf die gleiche Instanz der Klasse entsteht (class = Referenztyp). Structs wirst du fast nie brauchen. Und wenn du doch ein struct nimmst kannst du dort so ziemlich alle syntaktischen Elemente verwenden wie in einer Klasse. Dir muß nur der Unterschied zwischen Referenz und Wertetyp Verhalten bewusst sein und entscheiden welchen du brauchst.

Hier nimm einfach eine Klasse, instanziiere die irgendwo und übergebe diese Instanz einfach an die Formen die die brauchen. Dann haben alle eine Verweis auf das gleiche Ding und können die benutzen und die Änderungenen von anderen ~sehen~. Events würdest du nehmen um sofort auf Änderungen in der Klasse zu reagieren. Also wenn in Form1 der Inhalt der Klasse geändert wird und in Form2 sofort was passieren soll würdest du Events zusätzlich verwenden.