Hallo, für eine C# Anwendung möchte ich Daten von einem Window in ein View Fenster durchreichen. Wie kann dies in C# realisiert werden? [Windows Form] Daten erzeugen und mit einem Button zum entsprechenden Vew Fenster übermitteln [View Form] Daten von Windows Form erhalten und weiterverarbeiten
:
Bearbeitet durch User
Wird die View-Form vom Windows-Form erzeugt? Wenn ja, weisst du doch wie das View-Form heisst und du kannst da darauf zugreifen. Wie sieht denn dein bisheriger Code dazu aus? Gruß
Hallo, was ist denn ein View Form? Soviel ich weiß, gibt es da keine Unterschiede zwischen Fenster und Fenster. Messages-Boxen gibt es auch noch. Jedes Fenster ist eine Fensterinstanz, welche in deinem Program instaziirt sind. Wenn du Daten von einer Instanz in die andere schieben möchtest, musst du nur den Inhalt der einen Instanz nur in die andere kopieren. Du könntest die Inhalte natürlich noch in deinem Program zwischenspeichern und dann kopieren. Mit Databinding könntest du es noch etwas vereinfachen, aber da kann es unübersichtlich werden.
Zo R. schrieb: > für eine C# Anwendung möchte ich Daten von einem Window in ein View > Fenster durchreichen. Wie kann dies in C# realisiert werden? Databinding ist Dein Freund. Am Anfang ist es zwar gewöhnungsbedürftig, aber wenn man es einmal verstanden hat funktioniert das sehr gut. DEr ganze Kram die Daten in irgendwelchen Variablen zwischenspeichern zu müssen entfällt damit. Sehr angenehm ist auch das es in beide Richtungen funktioniert.
Danke euch. Das Tool ist aktuell zu groß um hier zu posten. Es handelt sich um ein View und Window. Ich brauche für den Anfang ein einfaches Beispiel, wo eine Textnachricht durchgereicht wird. Eventuell kann das Beispiel auch eine Datenbindung zeigen.
:
Bearbeitet durch User
Zo R. schrieb: > Ich brauche für den Anfang ein einfaches Beispiel, wo eine Textnachricht > durchgereicht wird. in der Hauptform ein event und delegate anlegen, die Klasse Eventargs beerben, nur mit einer Eigenschaft string "Message". Das Event löst du aus mit invoke new event und abonnierst im Zielform einen Eventhandler mit gleicher Signatur wie der delegate. Ganz einfach. Kann dir ChatGPT noch wesentlich eleganter erklären und auch gleich Snippets für copy&paste!
Guten Morgen, ChatGPD habe ich auch benutzt. Allerdings generiert mir ChatGPD ein Beispiel, das bei mir nicht so funktioniert. Ich habe einen View:
1 | namespace Config.Views |
2 | {
|
3 | public partial class FunctionsTelegramView : UserControl |
4 | {
|
5 | |
6 | }
|
7 | }
|
Und eien Windows:
1 | namespace Config.Windows |
2 | {
|
3 | public partial class DataSelectionWindow : Window |
4 | {
|
5 | }
|
6 | }
|
Das Problem bei mir ist das es unterschiedliche Classes sind: UserControl und Window
:
Bearbeitet durch User
Ich hab zwar in CHatGPD ein Beispiel generieren lassen, leider funktioniert das hinten und vorne überhaupt nicht.
:
Bearbeitet durch User
Zo R. schrieb: > Ich hab zwar in CHatGPD und wie hast du das geschrieben? Zo R. schrieb: > leider funktioniert das hinten und vorne überhaupt nicht. gratuliere zu der exzellenten Fehlerbeschreibung! Ich fürchte, das wird nichts mit C#.
Warum das wird nix. Ich kann unseren Code hier nicht kopieren.
:
Bearbeitet durch User
Beitrag #7665408 wurde vom Autor gelöscht.
Im obigen Post wird das generierte Beispiel von ChatGPD geziegt.
1 | protected virtual void OnMessageSent(string message) |
2 | {
|
3 | if (MessageSent != null) |
4 | {
|
5 | if (InvokeRequired) |
6 | {
|
7 | Invoke(new MessageEventHandler(OnMessageSent), new object[] { this, message }); |
8 | }
|
9 | else
|
10 | {
|
11 | MessageSent(this, message); |
12 | }
|
13 | }
|
14 | }
|
Wenn ich diesen Code hier bei mir platzire erscheint zum Beispiel diese Meldung: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler CS0123 Keine Überladung für "OnMessageSent" stimmt mit dem Delegaten "MessageEventHandler" überein.
:
Bearbeitet durch User
Du sollst ja auch eine eigene Event-Klasse erzeugen, geerbt von EventArgs und dort die Message als Eigenschaft hinzufügen.
Zo R. schrieb: > Wenn ich diesen Code hier bei mir platzire erscheint zum Beispiel diese > Meldung: > > Schweregrad Code Beschreibung Projekt Datei Zeile > Unterdrückungszustand > Fehler CS0123 Keine Überladung für "OnMessageSent" stimmt mit dem > Delegaten "MessageEventHandler" überein. Tja Programmieren ist schon ein bissel mehr als nur Copy & Paste. Das muß man einfach lernen, damit man das dann auch versteht. Am besten geht das mit einem passenden Fachbuch oder auch einem guten Onlinetutorial, für was man sich entscheidet ist Geschmackssache - ich persönlich investiere da gern in Papier. Das muß halt entsprechend durcharbeiten und dann eigenständig mal ein kleines Beispiel programmieren und nicht einfach was kopieren was man eigentlich noch gar nicht verstanden hat. Ja das ist mühsam und der Weg ist steinig, aber am Ende hat man es verstanden und kann es problemlos in eigenen Projekten anwenden. Die Fehlermeldung ist ziemlich eindeutig: Sender und Empfänger passen, einfach ausgedrückt, nicht zusammen. Warum, mußt Du schon selber heraus finden.
:
Bearbeitet durch User
Ok eine MessageEventHandler Klasse habe ich erstellt. Jetzt habe ich in der anderen Datei Fehlermeldungen:
1 | MessageSent += Data_MessageSent; |
2 | |
3 | private void Data_MessageSent(object sender, string message) |
4 | {
|
5 | // Prüfe, ob Invoke erforderlich ist
|
6 | if (InvokeRequired) |
7 | {
|
8 | // Verwende Invoke, um die Methode im UI-Thread aufzurufen
|
9 | Invoke(new Action<object, string>(Form1_MessageSent), sender, message); |
10 | }
|
11 | else
|
12 | {
|
13 | // Aktualisiere die UI-Komponente mit den empfangenen Daten
|
14 | //labelData.Text = message;
|
15 | }
|
16 | }
|
Fehlermeldung: Der Name MessageSent ist im aktuellen Kontext nicht vorhanden. Warum kann ich nicht in der anderen Form MessageSent verwenden?
:
Bearbeitet durch User
Ich vermute es liegt daran, dass ich keine Subscribe Funktion habe. Das Beispiel von ChatGPT passt nicht so zu meiner Anwendung. Wie kann ich in der View Form auf MessageSent zugreifen? Verdammt es muss doch möglich sein.
:
Bearbeitet durch User
Hans schrieb: > Die Fehlermeldung ist ziemlich eindeutig: Sender und Empfänger passen, > einfach ausgedrückt, nicht zusammen. Warum, mußt Du schon selber heraus > finden. Ja vielen Dank. Immer Dinge vorenthalten. Vielen Dank.
Zo R. schrieb: > Ja vielen Dank. Immer Dinge vorenthalten. Vielen Dank. Programmieren lernen ist auch (durchaus anspruchsvolle) Arbeit. Tipps und Hilfestellung zu deiner Eigenleistung kriegst du hier für lau, aber eine ganze Schulung eher nicht. Immerhin würde es immer helfen, den eigenen Kenntnisstand ehrlich zu nennen. Dann wissen wir besser wo wir ansetzen müssen.
P.S. Unverschämt werden ist auch kontraproduktiv!
Ich hab das ganze mit "Action" gelöst. Danke für deinen Tip mit delgate und Eventhandler.
:
Bearbeitet durch User
Zo R. schrieb: > Hans schrieb: >> Die Fehlermeldung ist ziemlich eindeutig: Sender und Empfänger passen, >> einfach ausgedrückt, nicht zusammen. Warum, mußt Du schon selber heraus >> finden. > > Ja vielen Dank. Immer Dinge vorenthalten. Vielen Dank. Das hat nichts mit vorenthalten zu tun. Ich habe das letzte Mal 2019 an einem C# Projekt gearbeitet. Da muß man sich dann auch erst mal wieder einarbeiten wie das genau funktioniert und ehe ich da auf die Schnelle was Falsches sage halte ich mich diesbezüglich lieber zurück. Allerdings weis ich noch, das wir da sehr viel mit Databinding gelöst haben. Fairerweise muß ich dazu sagen das das Projekt mit WPF gemacht wurde und da ist Bindig einfach die bessere Alternative. Die Fehlermeldung zu lesen, ist nun auch kein Teufelswerk. Aber ich merke schon Du hast gar keinen Bock Dich mit der Thematik auseinander zusetzen, Du bemühst lieber KI an statt selbst zu denken.
Hans schrieb: > Aber ich merke schon Du hast gar keinen Bock Dich mit der Thematik > auseinander zusetzen, Du bemühst lieber KI an statt selbst zu denken. Was heißt da ich würde mich nicht bemüht. Die KI habe ich als letztes benutzt und hat mir nicht sonderlich viel geholfen. Ich habe anstatt einen Kollegen von einer anderen Abteilung gefragt.
:
Bearbeitet durch User
Zo R. schrieb: > Die KI habe ich als letztes > benutzt und hat mir nicht sonderlich viel geholfen. Das war/ist bei solchen speziellen Sachen zu befürchten. Diese Thematik muß man sich selbst erarbeiten sonst wird das nichts. Eine guteBasis dafür ist z.B. Microsoft Learn, da gibt es ein recht umfangreiches Kapitel zum Thema "Databinding mit Windows Forms" (https://learn.microsoft.com/de-de/dotnet/desktop/winforms/data/overview?view=netdesktop-8.0). Das muß man halt durcharbeiten und es ist natürlich nicht in 5 Minuten erledigt, da muß man schon etwas Zeit einplanen. Das Ganze mal mit einem kleinen Testprojekt ausprobiert, ist da durchaus hilfreich. Aber man muß es halt wollen, KI fragen ist sicher einfacher, aber es führt eben nicht immer Ziel wie man sieht. Die Zeit die Du hier mit KI und Copy & Paste verdattelt hast, wäre in das Durcharbeiten der Thematik deutlich besser investiert gewesen und hätte Dich am Ende deutlich weiter gebracht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.