Die Hauptform meines Programms hat eine Schaltfläche, die eine zweite Form namens PortOpener öffnet. PortOpener ist so eingerichtet, dass er serielle, GPIB-, Ethernet- und USB-Ports öffnet, um mit externen Geräten zu kommunizieren. Sie wählen alle Daten aus, die zum Öffnen des Ports im PortOpener erforderlich sind, und klicken auf die Schaltfläche zum Öffnen des Ports. Dies übergab alle Portinformationen an eine neue Form namens serialWindow und dann serialWindow öffnet den Port.Zugriff auf eine Instanz eines Objekts aus einem anderen Formular
Hier wird das serialWindow erstellt und wie die Daten an das neue Formular übergeben werden.
private void OpenPortButton_Click(object sender, EventArgs e)
{
SerialWindow _serialWindow = new SerialWindow();
_serialWindow.Show();
_serialWindow.OpenCom(cboPort.SelectedItem.ToString(), cboParity.SelectedItem.ToString(), cboStop.SelectedItem.ToString(), cboData.SelectedItem.ToString(), cboBaud.SelectedItem.ToString(), NamePortTextBox.Text);
}
Hier ist das neue serialWindow, das an den Port angeschlossen wird.
Der Port wird geöffnet und ich kann Daten über den Port senden und empfangen. Ich kann mehrere Instanzen des Formulars öffnen, indem Sie verschiedene COM-Anschlüsse auswählen. Ich versuche es so zu machen, dass die mainForm Daten an das serialWindow übertragen kann.
Ich weiß, wie Sie Daten aus dem SerialWindow mit dieser Methode an die MainForm übergeben.
How to access a form control for another form?
Ich bin nicht sicher, wie man zwischen den verschiedenen Instanzen von serialWindows unterscheidet. Wenn die mainForm Daten über COM 3 und 6 übertragen möchte, werden COM-Ports geöffnet, wie würdest du sie adressieren? Sollte ich versuchen, es an alle von ihnen zu senden und dann die serialWindows prüfen lassen, ob der geöffnete COM-Port dem entspricht, auf dem ich übertragen möchte?
Danke für die Hilfe zu wissen,
Auch wenn das Denken nur in Formularen nicht der beste Weg wäre, würde ich ein Dictionary in der MainForms-Klasse erstellen, die alle geöffneten Ports und die entsprechenden serialWindow-Instanzen verfolgt. Mit Schlüsseln wie COM3 oder USB1 können Sie zwischen den Verbindungen unterscheiden. Fügen Sie die Referenz hinzu, wenn Sie verbunden sind, und entfernen Sie sie beim Trennen. – Yosh
Es gibt zahlreiche Ansätze, die Sie ergreifen können. Siehe das markierte Duplikat für verschiedene Optionen.Wenn Sie dies immer noch nicht beheben können, senden Sie eine neue Frage, in der Sie eine gute [mcve] eingefügt haben, die deutlich zeigt, was Sie versucht haben, zusammen mit einer genauen und detaillierten Erklärung, was der Code jetzt macht und was Sie wollen es stattdessen zu tun, und was _ specific_ Problem Sie haben dieses Ziel zu erreichen. –
Peter Duniho, nicht sicher, ob du trollst oder nicht. Wenn Sie die ganze Frage lesen, würden Sie sehen, dass ich weiß, wie man Daten zwischen 2 Formularen weiterleitet und einen Beispiellink liefert, von dem Sie behaupten, dass meine Frage eine Duplizierung ist. Was ich wollte, war, mit der richtigen Form zu sprechen, wenn mehrere Versionen dieses Formulars geöffnet wurden. Steve half, die Antwort mit Application.OpenForm.OfType zu lösen. – Laggmaster