Laden...

werte von form 1 nach form 2 und umgekehrt

Erstellt von darkangel1208 vor 5 Jahren Letzter Beitrag vor 5 Jahren 995 Views
D
darkangel1208 Themenstarter:in
20 Beiträge seit 2010
vor 5 Jahren
werte von form 1 nach form 2 und umgekehrt

ja, das wurde schon 1000 mal besprochen und ich habe es an andere stelle schon mit einem eventhandler hinbekommen. Nur diesmal habe ich kein wirkliches Event dazu.

Ich habe eine Hauptform (Form 1) und 16 weitere Forms (2-17).
In meiner Hauptform habe ich einen Network Server Socket gestartet mit ip-Adresse und port laso TCP/IP kommunikation. Das funktioniert. die 16 anderen Forms repräsentieren 16 physikalische Blackboxes mit sensoren in einem Netzwerk. Die Sensoren senden auf anfrage ihre Daten.

Mein Problem.... wenn ich jetzt vom Sensor die daten per mouseclick haben will. Dann ist der Button in Form2(-17) und muss diese Anfrage an die Hauptform weitergeben, damit die Hauptform die Anfage per TCP losschickt. oder ich muss den erstellten TCP Socket aus Form1 an Form2(-17) weitergeben, damit ich die methoden nutzen kann und Form2(-17) direkt die anfrage per TCP losschickt.

Welche Variante ist schlauer?

Letztere habe ich nicht hinbekommen und erstere scheitert zur Zeit daran, dass ich zwar in Form2(-17)die Daten Richtung Form1 übergeben kann, aber in Form1 gibt es zur Zeit keine Stelle im Code, wo ich die Daten in empfang nehmen könnte. Dort bräuchte ich sowas wie eine loop und wie ich die jetzt hinbekomme, bin ich grad zu blöd für. ich meine nicht while(true) oder so. Diese loop darf ja auch nicht den rest blockieren. Da fallen mir dann Threats ein. Nennt mir ein paar schlagworte, wie ihr das angehen würdet.


class Data
    {
        private static string Daten;
        public static string getDaten()
        {
            return Daten;
        }
        public static void setDaten(string value)
        {
            Daten = value;
        }
    }

Form2


        private void btn_start_stop_Click(object sender, EventArgs e)
        {
            if (btn_start_stop.Text == "Start")
            {
                btn_start_stop.Text = "Stop";
                senden(Reaktornummer + "#2#70#80#90");
            }
            else
            {
                btn_start_stop.Text = "Start";
                senden(Reaktornummer + "#2#0#0#0");
            }
        }
        private void senden(string Daten)
        {
            Data.setDaten(Daten);
        }

Form1


// hier fehlt die loop für diesen methodenaufruf
        private string empfangen(string Daten)
        {
            return Datenstrom = Data.getDaten();
        }

463 Beiträge seit 2009
vor 5 Jahren

Mehr gibt es dazu nicht zu sagen: [FAQ] Kommunikation von 2 Forms

Und noch als Hinweis:

Ich würde mich nie auf den Text als Auswahlkriterium verlassen - zum einen kannst du nicht lokalisieren und zum anderen reicht eine kleine ANpassung des Textes, dass deine ABfrage im Sande verläuft. Nimm für soetwas entweder das Attribute "Tag" oder leite von Button ab und füge eine eigenes Attribute ein.

  
if (btn_start_stop.Text == "Start")  
{  
     btn_start_stop.Text = "Stop";  
     senden(Reaktornummer + "#2#70#80#90");  
}  
else  
{  
     btn_start_stop.Text = "Start";  
     senden(Reaktornummer + "#2#0#0#0");  
}  
  
D
darkangel1208 Themenstarter:in
20 Beiträge seit 2010
vor 5 Jahren

Und noch als Hinweis:

Ich würde mich nie auf den Text als Auswahlkriterium verlassen - zum einen kannst du nicht lokalisieren und zum anderen reicht eine kleine ANpassung des Textes, dass deine ABfrage im Sande verläuft. Nimm für soetwas entweder das Attribute "Tag" oder leite von Button ab und füge eine eigenes Attribute ein.

Tja was soll ich dazu sagen Stefan. Ich habe hier keinen Text als Auswahlkriterium. Das sind Datenbankenabfragen und oder Sensordaten. Aber sie könnten so, oder ähnlich aussehen, wenn man sie in klarschrift als Text sehen könnte. Damit das ganze nicht zu wust wird, habe ich alles unwichtige rausgenommen und zu deinem Link da oben. den kenn ich schon. Das habe ich mir die letzen 2 Tage durchgelesen. HILFT aber NICHT weiter in meinem Fall. Weil es auf der empfängerform nichts gibt, wo ich z.B. einen Eventhandler anheften könnte.

463 Beiträge seit 2009
vor 5 Jahren

Ich habe hier keinen Text als Auswahlkriterium. Das sind Datenbankenabfragen und oder Sensordaten. Aber sie könnten so, oder ähnlich aussehen, wenn man sie in klarschrift als Text sehen könnte.

Ob groß oder klein ist doch egal - es ist so einfach, benutze das Attribut "Tag" und alles wäre gut...Für mich eine wichttige Regel der Entwicklung: IMMER sauber arbeiten und solche Dummheiten/Unschönheiten einfach nicht machen.

Weil es auf der empfängerform nichts gibt, wo ich z.B. einen Eventhandler anheften könnte.

Glaube ich nicht - denn du kannst z.B. auch an eine Form ein Event binden...