Benutzer mit den meisten Antworten
Visual C# Serielle kommunikation in andere Windows Form fenster benutzen

Frage
-
Guten Tag,
Aktuell stehe ich vor einem Problem mit Visual C# Serielle Kommunication.
Ich habe 4 Windows Form fenster. Ich muss bei allen den Serielle Kommunikation benutzen.
also in meinem Main Fenster kann ich es ohne probleme einfügen und nutzen. Doch leider habe ich absolut keine Ahnung wie ich es in meinem Form 2,3,4 benutzen kann.
Ich hoffe ich könnt mir weiterhelfen. Komme trotz google nicht weiter :(
Thx
Antworten
-
Hi,
Vielleicht können Dir folgende Links weiterhelfen : Link 1 & Link 2 .
Gruß,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort vorgeschlagen powerzone3000 Donnerstag, 3. April 2014 06:09
- Als Antwort markiert Ionut DumaModerator Donnerstag, 3. April 2014 10:13
-
Es hat teilweise Funktioniert Dankeschön schonmal Nun stehe ich vor Folgendes Problem.Wenn ich von meinem Form 1 in Form 2 gehe funktioniert alles ich kann den text in Richtextbox über WriteLine senden.
Wenn ich über einen button zurück in Form1 gehe und dort dann wieder was senden möchte kriege ich Fehler Meldung. Was muss ich nun machen.
//FORM1 // // using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Threading; namespace WindowsFormsApplication6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // FORM2 öffne Button private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.setSerialPort(serialPort1); frm2.Show(); this.Hide(); } // Sende Seriall Data button private void button2_Click(object sender, EventArgs e) { string Text1 = richTextBox1.Text; serialPort1.Write(Text1); } // öffne port2 private void button3_Click(object sender, EventArgs e) { if (!serialPort1.IsOpen) { serialPort1.PortName = "COM2"; serialPort1.Open(); richTextBox1.Text = "Opened"; } } private void Form1_Load(object sender, EventArgs e) { } } }
// Form2 // using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Threading; namespace WindowsFormsApplication6 { public partial class Form2 : Form { SerialPort myPort; public Form2() { InitializeComponent(); } public void setSerialPort(SerialPort port) { myPort = port; } private void Form2_Load(object sender, EventArgs e) { } //zurück zu Form1 private void button1_Click(object sender, EventArgs e) { Form1 form = new Form1(); form.Show(); this.Hide(); } // Sende inhalt von Form2 Richtextbox private void button2_Click(object sender, EventArgs e) { string Text_Form2 = richTextBox1.Text; myPort.WriteLine(Text_Form2); } } }
Vielen Dank
- Als Antwort markiert ms_cikar Donnerstag, 3. April 2014 10:42
-
Hallo,
Da Form.ShowDialog (nicht .Show()!) blockiert bis das Fenster geschlossen wurde, kannst du einfach vorher this.Hide und hinterher wieder this.Show aufrufen.
Dann sollte es klappen:
// FORM2 öffne Button private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.setSerialPort(serialPort1); this.Hide(); frm2.ShowDialog(); this.Show(); }
Ich hoffe ich konnte helfen!
- Als Antwort markiert ms_cikar Donnerstag, 3. April 2014 10:41
Alle Antworten
-
Hi,
Vielleicht können Dir folgende Links weiterhelfen : Link 1 & Link 2 .
Gruß,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort vorgeschlagen powerzone3000 Donnerstag, 3. April 2014 06:09
- Als Antwort markiert Ionut DumaModerator Donnerstag, 3. April 2014 10:13
-
Es hat teilweise Funktioniert Dankeschön schonmal Nun stehe ich vor Folgendes Problem.Wenn ich von meinem Form 1 in Form 2 gehe funktioniert alles ich kann den text in Richtextbox über WriteLine senden.
Wenn ich über einen button zurück in Form1 gehe und dort dann wieder was senden möchte kriege ich Fehler Meldung. Was muss ich nun machen.
//FORM1 // // using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Threading; namespace WindowsFormsApplication6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // FORM2 öffne Button private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.setSerialPort(serialPort1); frm2.Show(); this.Hide(); } // Sende Seriall Data button private void button2_Click(object sender, EventArgs e) { string Text1 = richTextBox1.Text; serialPort1.Write(Text1); } // öffne port2 private void button3_Click(object sender, EventArgs e) { if (!serialPort1.IsOpen) { serialPort1.PortName = "COM2"; serialPort1.Open(); richTextBox1.Text = "Opened"; } } private void Form1_Load(object sender, EventArgs e) { } } }
// Form2 // using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Threading; namespace WindowsFormsApplication6 { public partial class Form2 : Form { SerialPort myPort; public Form2() { InitializeComponent(); } public void setSerialPort(SerialPort port) { myPort = port; } private void Form2_Load(object sender, EventArgs e) { } //zurück zu Form1 private void button1_Click(object sender, EventArgs e) { Form1 form = new Form1(); form.Show(); this.Hide(); } // Sende inhalt von Form2 Richtextbox private void button2_Click(object sender, EventArgs e) { string Text_Form2 = richTextBox1.Text; myPort.WriteLine(Text_Form2); } } }
Vielen Dank
- Als Antwort markiert ms_cikar Donnerstag, 3. April 2014 10:42
-
Hallo,
du erstellst in Form2 beim zurückgehen auf Form1 eine neue Instanz von Form1 und zeigst diese an:
Form1 form = new Form1(); form.Show();
aber die "alte" Form1 ist ja im Hintergrund noch offen.
Ich würde die Formen nicht verstecken (.Hide), sondern Form2 ganz normal schließen wenn du sie nicht mehr brauchst (this.Close();).
Wenn du nicht möchtest, dass man auf Form1 weiterarbeiten kann während Form2 geöffnet ist, würde ich ShowDialog probieren:
frm2.ShowDialog();
Ich hoffe das hilft dir weiter.
-
Hallo,
du erstellst in Form2 beim zurückgehen auf Form1 eine neue Instanz von Form1 und zeigst diese an:
Form1 form = new Form1(); form.Show();
aber die "alte" Form1 ist ja im Hintergrund noch offen.
Ich würde die Formen nicht verstecken (.Hide), sondern Form2 ganz normal schließen wenn du sie nicht mehr brauchst (this.Close();).
Wenn du nicht möchtest, dass man auf Form1 weiterarbeiten kann während Form2 geöffnet ist, würde ich ShowDialog probieren:
frm2.ShowDialog();
Ich hoffe das hilft dir weiter.
HI danke für schnelle antwort.
Mein problem ist nicht dass ich auf Form1 zurückkehren kann.
Ich kann ohne problem Form1 wieder aufrufen.
ich benötige nach dem ich in Form2 was ausgegeben habe wieder Form1 deswegen benutze ich HideMein Problem:
zurück zu Form 1 funktioniert ohne Probleme.
wenn ich jetzt über den Richtextbox was senden möchte Fehler kriege. :(
-
Momentan kehrst du aber nicht auf Form 1 zurück, sondern du erstellst eine neue Form 1.
Versuch mal einfach durch schließen der Form2 zur Form1 "zurückzukehren":
//zurück zu Form1 private void button1_Click(object sender, EventArgs e) { this.Close(); }
Damit Form 1 dann aber auch sichtbar ist, darfst du diese vorher nicht per .Hide verstecken. Damit man nicht auf Form 1 weiterarbeiten kann während Form 2 geöffnet ist, kannst du ShowDialog statt Show verwenden.
-
Momentan kehrst du aber nicht auf Form 1 zurück, sondern du erstellst eine neue Form 1.
Versuch mal einfach durch schließen der Form2 zur Form1 "zurückzukehren":
//zurück zu Form1 private void button1_Click(object sender, EventArgs e) { this.Close(); }
Damit Form 1 dann aber auch sichtbar ist, darfst du diese vorher nicht per .Hide verstecken. Damit man nicht auf Form 1 weiterarbeiten kann während Form 2 geöffnet ist, kannst du ShowDialog statt Show verwenden.
Vielen Dank ,
Ja so funktioniert es.
Problem Erledigt. Bin aber neugierig.
Wie kann ich es so einstellen dass wenn ich von
Form1--> Form2 aufrufe (Dabei Form1 nicht sichtbar)Seriell weiterhin verfügbar
dann wieder zurück zu Form1 und dort weiter Seriell Funktion benutzen kann.
Es ist in dem Fall aufgeräumter besser für Übersichtlichkeit.
Ich finde es immer besser wenn nur ein Fenster sichtbar ist.
Mit freundlichen Grüßen
-
Hallo,
Da Form.ShowDialog (nicht .Show()!) blockiert bis das Fenster geschlossen wurde, kannst du einfach vorher this.Hide und hinterher wieder this.Show aufrufen.
Dann sollte es klappen:
// FORM2 öffne Button private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.setSerialPort(serialPort1); this.Hide(); frm2.ShowDialog(); this.Show(); }
Ich hoffe ich konnte helfen!
- Als Antwort markiert ms_cikar Donnerstag, 3. April 2014 10:41
-
Hallo,
Da Form.ShowDialog (nicht .Show()!) blockiert bis das Fenster geschlossen wurde, kannst du einfach vorher this.Hide und hinterher wieder this.Show aufrufen.
Dann sollte es klappen:
// FORM2 öffne Button private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.setSerialPort(serialPort1); this.Hide(); frm2.ShowDialog(); this.Show(); }
Ich hoffe ich konnte helfen!
Vielen Dank
Es hat Funktioniert :)