Hilfe in Microsoft Visual C => Variable von Form1 in Form2 aktuallisiert durchreichen

Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hilfe in Microsoft Visual C => Variable von Form1 in Form2 aktuallisiert durchreichen

Hallo,

bin neu auf diesem Gebiet,
Ich habe eine Frage an euch,
wie kann ich z.B. eine Variable die in Form1 ständig aktuallisiert wird,
auch in Form2 anzeigen?

Habe mal ein kleines Progrämmchen gemacht, vielleicht könnt ihr so mein Problem nachfolziehen?

Delegator die Lösung?
Was, wie geht das?

--danke--*ROFL*
 

Anhänge

  • Delegat_uebung.zip
    49,6 KB · Aufrufe: 17
Variable in Form 2 als Eigenschaft implementieren, der Form 1 die Form 2 bekannt machen (Referenz darauf) und dann von Form 1 aus die Eigenschaft in Form 2 aktualisieren, wenn sich der Wert der Variablen in Form 1 geändert hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CSharp

Wenn schon CSharp gemeint ist, dann bitte auch in der Überschrift so schreiben!

Wer ruft welche Form auf? Wird Form2 von Form1 aus geöffnet? Oder umgekehrt?

Du kannst auch die Variable als Public Property der Form1 anlegen, und beim Öffnen der Form2 dieser die Instanz der Form1 mitgeben.
(Hab mir dein Programm jetzt aber nicht angeschaut...)
 
So...

Hab dir mal ein Beispiel gemacht, aber ist nur eines von vielen.

Es kommt halt an was genau dein Programm bewirken soll. Genauso kannst du auch das Steuerelement selbst public machen!
 

Anhänge

  • Delegat_uebung.zip
    51,1 KB · Aufrufe: 21
Weiteres Problem

Hallo,
ich möchte überprüfen ob es auf der Festplatte auf einem bestimmten Pfad einen Ordner gibt, wenn nicht automatisch einen anlegen.

Anschließend möchte ich in dieses Ordner in eine .txt Textdatei schreiben,

allerdings kommt ein Fehler nur beim ersten mal, wenn er den Ordner mit der Datei erstellt hat,
wie bekomme ich das weg?
Irgendwas greift noch auf die Datei zu, aber wer?

Im Anhang der Quellcode:

-danke für die Antwort-
 

Anhänge

  • Fehler_in_Datei.txt
    1,7 KB · Aufrufe: 8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte überprüfen ob es auf der Festplatte auf einem bestimmten Pfad einen Ordner gibt, wenn nicht automatisch einen anlegen.

Anschließend möchte ich in dieses Ordner in eine .txt Textdatei schreiben,

allerdings kommt ein Fehler nur beim ersten mal, wenn er den Ordner mit der Datei erstellt hat,
wie bekomme ich das weg?
Irgendwas greift noch auf die Datei zu, aber wer?

Im Anhang der Quellcode:

-danke für die Antwort-

Also Ich kapier jetzt deine Beschreibung nicht ganz, was kommt für ein Fehler?

und wenn du in deinem Code schon Variablen anlegst in denen du die Pfadangaben kombinierst, dann verwende die doch auch...

Hab deinen Code etwas angepasst das er schöner aussieht, aber nicht geprüft...

Pfadangaben kannst du auch über System.IO.Path.Combine zusammenfügen (Platformunabhänig)
Code:
// Variable für Datei anlegen
                string Dateiname = (DateTime.Now.Month.ToString()) + "_" + DateTime.Now.Year.ToString();
                string aktueller_ordner = "D:\\LOGDATEI\\" + DateTime.Now.Year.ToString();
                string aktuelle_datei = aktueller_ordner + "\\" + Dateiname + ".txt";

                // Prüfen ob Pfad voranden ist, wenn nicht anlegen
                if (!System.IO.Directory.Exists(aktueller_ordner))
                {
                    System.IO.Directory.CreateDirectory(aktueller_ordner);
                }  

                // Prüfen ob Datei vorhanden ist, wenn nicht anlegen
                if (!System.IO.Directory.Exists(aktuelle_datei))
                {
                    System.IO.File.Create(aktuelle_datei);
                }


            // Datei beschreiben
                double Oberflaechenspannung = 5.354;
                System.IO.StreamWriter SW = new System.IO.StreamWriter(aktuelle_datei,true);
                SW.WriteLine("Sita am " + DateTime.Now.ToShortDateString() + "    " + DateTime.Now.ToLongTimeString());
                SW.WriteLine("Oberflächenspannung: 16");
                SW.WriteLine("Testkjhsdfkjhsdkfhkjh: 515");
                SW.WriteLine("Tekjhdkjfhkjh: 521");
                SW.WriteLine("---------------------------------------------------------------------");
                SW.Close();
 
Hallo,

kannst du mal bitte die Exception posten?
-> kann es ggf. sein, dass CreateFile die Datei blockiert?
--> der StreamWriter kann auch die Datei anlegen => CreateFile = überflüssig.
 
Hier die Fehlerbeschreibung

Das Programm soll auf der Festplatte prüfen ob ein Ordner vorhanden ist, wenn nicht diesen anlegen.

Anschließend in dieses Ordner, der eine .txt Textdatei enthält etwas rein schreiben.

Doch allerdings geht das hintereinander bei meinem Programm nicht, da etwas die Datei noch auf hat und dadurch schreiben blockiert wird
 

Anhänge

  • Exception.txt
    2,6 KB · Aufrufe: 4
  • Fehlermeldung.JPG
    Fehlermeldung.JPG
    206,7 KB · Aufrufe: 15
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du
Code:
System.IO.File.Create("D:\\LOGDATEI\\" + DateTime.Now.Year.ToString()+"\\" + Dateiname+".txt");

durch
Code:
FileStream aa = System.IO.File.Create("D:\\LOGDATEI\\" + DateTime.Now.Year.ToString()+"\\" + Dateiname+".txt");
 = System.IO.File.Create(aktuelle_datei);
aa.Close();

ersetzt, dann gehts.

File.create erzeugt immer ein Filestream Objekt, auch wenn du es keiner Variable zuweist. Dadurch das du aber das filestream Objekt nicht explizit schliest, wird dies dann erst später bei dispose dorch den GarbageCollector gemacht, doch der wird noch nicht aufgerufen bis du das nächste mal auf deine Datei zugreifst!
 
Wenn du
Code:
System.IO.File.Create("D:\\LOGDATEI\\" + DateTime.Now.Year.ToString()+"\\" + Dateiname+".txt");

durch
Code:
FileStream aa = System.IO.File.Create("D:\\LOGDATEI\\" + DateTime.Now.Year.ToString()+"\\" + Dateiname+".txt");
 = System.IO.File.Create(aktuelle_datei);
aa.Close();

ersetzt, dann gehts.

File.create erzeugt immer ein Filestream Objekt, auch wenn du es keiner Variable zuweist. Dadurch das du aber das filestream Objekt nicht explizit schliest, wird dies dann erst später bei dispose dorch den GarbageCollector gemacht, doch der wird noch nicht aufgerufen bis du das nächste mal auf deine Datei zugreifst!
###################################################

:D Vielen Dank, jetzt geht es so wie ich mir das Vorgestellt habe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diagramm Aktualisieren

Hallo Jochen,

muss dich leider nochmals mit einem Problem belasten...

Ich habe nun bei Microsoft das Chart Contorl runtergeladen damit ich ein Diagramm zeichnen kann.
Später sollte ich mal Temperaturen aufzeichen.
Habe dir im Anhang ein Beispiel;

Hast du ne Ahnung, wenn man in der Tabelle neue Werte einträgt, wie sich dann das Diagramm automatisch aktuallisiert, wie man es aus Exsel gewohnt ist?
Oder gibt es eine Methode (z.B. Refresh) damit das Diagramm aktuallisiert wird?

mit freundlichen Grüßen
 

Anhänge

  • Chart.zip
    505 KB · Aufrufe: 3
Hallo,
die Werte werden an den Chart ähnlich wie bei einer Listbox übergeben :
Code:
chart1.Series["Series1"].Points.AddY(myPoint);
... das geht natürlich auch genau so mit den X-Koordinaten ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ...

Nein, eine automatische Aktualisierung gibt es meines Wissens nicht.
Das macht die Siemens-Visu btw. auch nicht. Hier wird z.B. auch ein Trigger abgefragt (sehr wahrscheinlich zyklisch über eine Timer-Funktion) und bei dessen Änderung dann der Datenbereich geladen und an die Anzeige (Chart) übertragen. Das müßtest du nun zu Fuß machen.
Du könntest dir aber auch für die benötigten Unterfunktionalitäten den Chart in eine eigene Klasse übernehmen (Inherits) und die gewünschten Dinge drum herum programmieren. Da kann ich dir dann allerdings nicht so sehr helfen da C-Sharp nicht so mein Ding ist (ich würde es halt in VB machen :rolleyes:).

Gruß
Larry
 
Also das heist es gibt keine automatische aktuallisierung?
Evtl. mit einem Timer die Sache starten?

also Ich nutze dieses Beispiel Control ja auch in meinem ConnectionLibrary Beispiel Programm, und da erzeuge Ich die Punkte einfach bei einer änderung jedes mal neu:

Codeauszug:
Code:
 chart1.Series["Series1"].Points.Clear();
                    var tmp = (LibNoDaveValue) var1.SelectedItem;
                    foreach (var oldValue in tmp.OldValues)
                    {
                        double wrt = (float) Convert.ToDouble(oldValue);
                        chart1.Series["Series1"].Points.AddY(wrt);
                    }

Ich weiß nicht wie das mit Databinding und diesem Control aussieht, und ob das überhaupt möglich ist.

In WPF sieht das ganze schon wieder anders aus, dort gibt's ein mächtiges Databinding, und mit entsprechenden Controls geht da das automatische aktualisieren sicher.
 
Zurück
Oben