Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von chrisrabe
Thema: Wie werden mehrere Forms über Veränderungen benachrichtigt?
Am im Forum: GUI: Windows-Forms

Hallo,

danke für die regen Ideen.
Bevor wir zu weit vom eigentlichen Ziel abweichen muss ich nochmal klarer sagen was gemeint ist. Letztendlich ist nicht das Ziel tatsächlich irgendwie die offenen Forms genannt zu bekommen, sorry für die unklare Formulierung.

Es ist so:
Das Windows Forms Programm hat eine Menge zuschaltbarer Funktionsmodule. Diese werden, je nach Konfiguration des Programmes, freigeschaltet, z.B.:
- Option Temperaturmesser
- Option Torsteuerung
- Option Lichtsteuerung
- Option Wasserverteilung
...

Es soll ein übergeordnetes Status-Form im Hauptprogramm durch Tastendruck geöffnet werden. Dieses soll nun eine 'broadcast ähnliche' Aufforderung schicken, welche alle aktiven Funktionsmodule dazu veranlasst, sich beim Status-Form zu melden, damit dieses dann deren Namen auflisten kann. Sobald sich ein Modul am Status-Form angemeldet hat soll das Status-Form auf ein Event des jeweiligen Modules hören, in welchem Messdaten übertragen werden. Die Anmeldung am Status-Form kann aber nicht bei Programmstart erfolgen, da dieses zu dem Zeitpunkt nicht läuft. Das Status-Form muss also zur Anmeldung aufrufen.

Thema: Wie werden mehrere Forms über Veränderungen benachrichtigt?
Am im Forum: GUI: Windows-Forms

Hallo, ich komme wieder einmal nicht weiter und hätte gerne einen Ansatz für folgendes Problem:

Ich habe ein Programm, welches mehrere Forms geöffnet haben kann.
Ein Übersichtsform soll die wichtigsten Inhalte aller offenen Forms darstellen. Im einfachsten Fall z.B. eine Namensliste.

Mein Wunsch wäre, im Übersichtsform so eine Art Broadcast oder Event zu schicken, auf welches alle Forms hören und ihre Antwort zurück schicken.

Was wären denn hier die richtigen Stichworte zur Suche? Mit Broadcast finde ich immer wieder UDP Ansätze, ich dachte mehr an Events. Unter 'Callback' hatte ich bislang vermutet eine Lösung zu finden, aber zum Erfolg komme ich damit auch nicht.

u.U. wichtig zu wissen ist: dass das Übersichtsfor immer erst geöffnet wird, wenn die anderen Forms bereits laufen. Diese können sich also nicht am Ü.Form anmelden, die Suche/Anfrage muss also vom Ü.Form ausgelöst werden.

ich schätze mein Ansatz ist nicht der richtige?

Viele Grüße
Christian

Thema: Wie kann ich nicht benötigte Events aus der Kommunikation mit Geräte und UI rausfiltern?
Am im Forum: GUI: Windows-Forms

Hallo TH69,

vielen Dank. Diesen Beitrag habe ich nicht gefunden.

Grüße

Thema: Wie kann ich nicht benötigte Events aus der Kommunikation mit Geräte und UI rausfiltern?
Am im Forum: GUI: Windows-Forms

Hallo Forum,

ich habe seit Jahren immer wieder ein ungelöstes Problem, welches ich nun nach längerer Programmierpause endlich versuchen möchte zu beseitigen - ich denke ich bin auf eine völlig falschen Strategie festgefahren.

Zum Problem:
Ich habe ein Windows Forms Programm, welches die Bedienung von externen Geräten ermöglicht. Die Geräte hängen per Schnittstelle am PC. Als einfaches Beispiel ein Netzteil. Ich möchte nun, dass die Bedienelemente der GUI beim Start des Programmes den Zustand der Hardware abfragen und auf der GUI darstellen (z.B. eingestellte Spannung, eingestellter max. Strom, etc.) Das ist alles kein Thema und funktioniert natürlich.

Über die Controls für Strom und Spannung auf der GUI steuert der Benutzer zur Laufzeit das Netzteil (funktioniert auch), jedoch auch vom Netzteil selbst vorgenommene Änderungen dieser Werte sollen in den Controls richtig gezeigt werden, damit die GUI Anzeige immer mit dem Istzustand am Netzteil übereinstimmt. sprich: Das Control wird vom User als auch vom Programm verändert.

Mein Problem besteht darin, dass bei Änderungen durch das Programm auch die Ereignisse der Controls aufgerufen werden, welche ich für die manuelle Bedienung aufrufe (z.B. Value changed).

Das führt z.B. dazu, dass eine Änderung durch das Netzteil vom Prog erkannt und an das Control weitergereicht wird. Die Änderung des Control feuert das Event, welches nun die neuen Werte an das Netzteil sendet (dieses ist ja aber bereits auf diesen Wert eingestellt)

Ich suche nach einem Weg, der nicht unnötige Events auslöst und keine unnötige Kommunikation auf der Schnittstelle verursacht. Ich bin scheinbar zu festgefahren um selbst auf eine Lösung zu kommen...

Weiß jemand Rat?

Vielen Dank

Thema: GUI Design (Schriften, Bilder, etc.) sind plötzlich anders bei Target Framework 4.6
Am im Forum: GUI: Windows-Forms

Hallo Abt,

danke für diesen Hinweis. Klingt logisch und passt zum Verhalten hier. Es hat sich am Quellcode nichts (zumindest diesbezüglich nichts) geändert.

Ich habe eine ältere Variante aus GIT zurück geholt, die eben solche Effekte zeigte.

Denke mit den gegebenen Tipps bekomme ich das wieder hin.

Danke!

Thema: GUI Design (Schriften, Bilder, etc.) sind plötzlich anders bei Target Framework 4.6
Am im Forum: GUI: Windows-Forms

Hallo MarsStein,

Danke für den Tipp. Da ich noch auf 4.6 arbeite möchte ich erstmal wissen was hier passiert ist.

Die Richtung in die Th69 verweist wirkt schon mal in der vergrößerten Schrift wie eine gute Lösung. Hier stand in Win10 tatsächtlich 125%. Das Scaling der Forms steht auf none.

Möglicherweise ist hier was passiert beim Einrichten des zweiten Displayports auf meiner W530 Dockingstation. Das würde in den Zeitraum passen.

Danke erstmal für die Hinweise!!

Grüße
Christian

Thema: GUI Design (Schriften, Bilder, etc.) sind plötzlich anders bei Target Framework 4.6
Am im Forum: GUI: Windows-Forms

noch ein Nachtrag....

erstaunlicherweise treten einige dieser Größenprobleme erst beim Ausführen des compilierten Programmes auf:

Wenn ich Forms im VS2015 Editor geöffnet habe und das Laufende Programm daneben schiebe sieht man deutlich, dass z.B. Panels auf der GUI im ausgeführte Code nur 3/4 so groß sind wie im VS-Designer.

Thema: GUI Design (Schriften, Bilder, etc.) sind plötzlich anders bei Target Framework 4.6
Am im Forum: GUI: Windows-Forms

Nachtrag...

es sing jedoch nicht nur die Schriften. Auch Bilder sind verschoben.
Deutlich erkennbar ist das z.B. dadurch, dass ein Form eine Hintergrundgrafik enthält, die an manchen Stellen von picture boxen überlagert ist.
Diese Positionen stimmen auch nicht mehr.

Thema: GUI Design (Schriften, Bilder, etc.) sind plötzlich anders bei Target Framework 4.6
Am im Forum: GUI: Windows-Forms

Hallo,

es ist schon zum verzweifeln wenn Dinge die 'immer gingen plötzlich 'von alleine' nicht mehr gehen.

Ich arbeite seit mehreren Jahren unter VS2015 an einem C# Projekt, welches viele Forms enthält. Seit einigen Tagen ist aufgefallen, dass sich die Schriften (möglicherweise auch andere Dinge wie Bilder...) in der Größe geändert haben, wodurch das Programm nicht nur bescheiden aussieht, sondern z.T. auch nicht mehr nutzbar ist.

Die Schriftdarstellung von VS2015 Arbeitsumgebung ist nicht betroffen, nur die Darstellung meines Programmes, welches als Terget Framework .NET 4.6 benutzt

Offensichtlich finde ich nicht die geeigneten Suchbegriffe für das Forum oder Suchmaschinen um der Ursache auf die Spur zu kommen. Ich kann mir nicht vorstellen der einzige betrofene zu sein.

Kann mir jemand helfen dieses Problem zu lösen?

Grüße

Thema: Herkunft von Windows.Forms.TreeView Nodes
Am im Forum: GUI: Windows-Forms

Guten Morgen Th69 und C#nup,

vielen Dank für Eure Tips!

Es ist zwar nicht unbedingt die elegante Variante, aber ich konnte durch Euch immerhin mein Ziel erreichen den ungewünschten Node zu entfernen.

Ein schlichtes

projectTreeView.Nodes[0].Nodes[2].Remove();

nach dem InitializeComponent() im Constructor beendet meine Suche nun bis auf weiteres erfolgreich.

Danke nochmals!!

Grüße
Chrisrabe

Thema: Herkunft von Windows.Forms.TreeView Nodes
Am im Forum: GUI: Windows-Forms

Hallo C#nup,

genau da liegt ja mein Problem.
Nach Ausführung dieser Zeile ist mein Knoten mit dem RootNode und den vier ChildNodes versehen.
Dies passiert also durch Ausführung der Operation von "resources.GetObject("projectTreeView.Nodes")".
Was ich halt nicht verstehe ist, woher die Informationen über diese Knoten kommen. Worauf greift denn das '.GetObject' zu?

Grüße

Thema: Herkunft von Windows.Forms.TreeView Nodes
Am im Forum: GUI: Windows-Forms

Hallo Th69,

dort habe ich als erstes eschaut, aber es gibt keinerlei Zusammenhang zwischen diesen Dateien und den ChildNodes - sprich sie tauchen dort nicht auf,

trotzdem danke für den Tip!

Thema: Herkunft von Windows.Forms.TreeView Nodes
Am im Forum: GUI: Windows-Forms

Hallo MrSparkle,

ich verstehe den Ansatz sich selbst vorab um eine Lösung zu bemühen durchaus richtig. Ich habe auch bereits vor Deinem Tipp als auch jetzt nochmals mich genau mit diesen Resourcen beschäftigt, komme aber sei gestern schlicht nicht vorwärts.

Es ist eine Datei MeinProgramm.Recources.dll vorhanden, in der diese ChildNodes zu finden sind. Was ich nicht verstehe ist die Herkunft dieser Datei und wie sie zu ihrem Inhalt kommt.
Ein 'Resource File' ist in den Projekt properties unter 'Application' nicht eingetragen.

Ist es denn vermessen zu fragen, ob mein Ansatz falsch ist, dass der Name der ChildNodes in exakter Schreibweise irgendwo innerhalb der Dateien im Projekt zu finden sein müsste?

Grüße

Thema: Herkunft von Windows.Forms.TreeView Nodes
Am im Forum: GUI: Windows-Forms

Hallo Liebes Forum,

ich bearbeite ein fremdes Programm (C#) unter Visual Studio 2015 und muss dabei aus einem vorhandenen TreeView einen ChildNode entfernen. Klingt zwar komisch, aber ich bin dazu offensichtlich nicht in der Lage. Vielleicht könnt Ihr mir zeigen was ich nicht weiß?

Problem
Ich habe im laufenden Programm auf dem Haupt Form ein TreeView mit einem RootNode und vier ChildNodes. In den Properties kann ich unter 'Nodes' die 'Collection' ansehen und finde hier auch den RootNode. Die ChildNodes werden aber nicht durch die Einstellunden im treenode Editor angelegt/angezeigt (siehe anhängendes Bild).

In der Datei MeinProgram.Designer.cs finde ich wohl die Stelle, an welcher der RootNode zugewiesen wird:

  this.projectTreeView.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
            ((System.Windows.Forms.TreeNode)(resources.GetObject("projectTreeView.Nodes")))});

Mit einem Breakepoint vor dieser Zeile kann ich hier auch den RootNode und darunter die vier ChildNodes finden, habe aber schlicht keine Ahnung wo die vier ChildNodes definiert werden.
Klar ist, dass die ChildNodes durch Ausführen von 'InitializeComponent()' im Construktor des Hauptprogrammes bereits existieren.

Ich habe das Gesamte Projekt nach dem Namen des zu entfernenden ChildNodes "Control Loops" durchsucht und nichts gefunden.

Frage
Kann mir jemand sagen wo ich die Definition der ChildNodes finden kann?
Natürlich meine ich damit nicht die Zeile in meinem Euch unbekannten Quellcode, sondern ob der Ursprung irgendwo hinter der obigen Anweisung "...resources.GetObject("projectTreeView.Nodes")..." liegt. Ich verstehe diese Zeile nicht und kann in der Richtung deshalb nicht vernünftig suchen.

Vielen Dank im Voraus

Thema: Programmname ändern in Visual Studio 2008
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Bernd,

da versuche ich schon eine ganze Weile dran zu kommen, also an die Eigenschaften der Verknüpfung. Wenn ich mit der Maus auf der Verknüpfung 'rechts-klicke' startet irrsinnigerweise der Installer wieder. Wenn ich hingegen manuell eine Verknüpfung auf den Desktop ziehe, dann funktioniert die ganz normal.

Bis auf die Funktion der Verknüpfung sieht es also jetzt schon ganz gut aus...


(Alle anderen Verknüpfungen auf dem Rechner funktionieren einwandfrei - also kein generell merkwürdiges Verhalten)

Gruss
Christian

Thema: Programmname ändern in Visual Studio 2008
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Etwas weitergekommen bin ich.

Ich habe das Setup Projekt nochmals kompiliert, mit 'R*** Uninstaller' alles dieser Installation auf dem Rechner entfernt und die Installation neu durchgeführt. Jetzt sind Installationspfad und Texte im Installationsdialog richtig. Der Name unter dem Icon bleibt aber der falsch.

Thema: Programmname ändern in Visual Studio 2008
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo vbprogger,

das dachte ich auch, aber auch nachdem ich den Namen dort geändert hatte änderte sich nichts.
Der 'alte' Name wird konsequent beim Installer verwendet. In allen Texten zur Benutzerführung usw. Habe auch scheon MVS neu gestartet und die Änderungen erneut überprüft - geht nicht.

Das kann doch nicht so schwer sein....

Thema: Programmname ändern in Visual Studio 2008
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

die ist zwar eine Grundlagenfrage, aber ich komme schlicht nicht dahinter, sorry.

Die Situation:
Man hat sich entschlossen ein umfangreiches Projekt nun umzubenennen. Überall dort wo es programm technisch geändert werden kann habe ich das erledigt. Auch das Icon im Programm und für den Link auf dem Desktop (nach Ausführen des Installers) sind angepasst.
(Zur Weitergabe der Software wird mit dem eingebauten Installer des Visual Studio 2008 ein *.msi file erstellt)

Das Problem:
Was ich einfach nicht schaffe ist den Programmnamen, der unter dem Desktop-Icon steht, zu ändern :-(
Der "Assembly name" in den Projekt Properties ist natürlich angepasst, der ist es also nicht.

Hat jemand einen Rat für mich?

Gruß
Christian

Thema: Delegaten mit Verweis aus Variabler erstellen
Am im Forum: Rund um die Programmierung

Hallo Robin,

das klingt im Grunde auch gut, sofern der eigentliche Aufruf

ComandoParser.Execute("SNR");
eben eine Variable verträgt anstelle des "SNR", also

ComandoParser.Execute(Funktion);
.
Ich muss es ausprobieren... Danke für diesen Ansatz


Hallo Witte,

das kannte ich nicht. Interessante Idee, die ich nochmals lesen werde.
Danke

Thema: Delegaten mit Verweis aus Variabler erstellen
Am im Forum: Rund um die Programmierung

Guten Morgen, Abt und Sarc,

vielen Dank für Eure Tipps. Denke das hilft mir weiter.

Thema: Delegaten mit Verweis aus Variabler erstellen
Am im Forum: Rund um die Programmierung

Hallo Forum,

auf meiner nun wirklich langen und erfolglosen Suche nach einer Lösung bin ich hier im Forum gelandet und hoffe auf Eure Hilfe.

In VisualStudio 2008 und 2010 versuche ich in C# einen Kommando Parser zu erstellen, der eingehende RS232 Antworten eines externen Gerätes interpretiert und eine entsprechende Funktion aufruft.
Die zu erkennenden Kommandos wie die dazu gehörig auszuführenden Funktionen möchte ich in einem 2-dimensionalen Stringarray verwalten etwa so:

SNR, SaveSN
Typ, ShowTyp
...


Nach Erkennung eines Kommandos soll irgendwie (ich dachte mit Delegaten) die entsprechende Funktion/Methode aufgerufen werden, also irgendwie so:


string[,] MyArray = new string[2, 2] { { "SNR", "SaveSN" }, { "Typ", "ShowTyp" } };
string TargetFunction = MyArray[0][0];
fncPtr = TargetFunction;
SNR z.B. ist also eine Kennung die per RS232 kommt, SaveSN der Name einer Funktion die bei Erkennung auszuführen ist.

Mit den Delegaten habe ich zwar geschafft eine Funktion aufzurufen, aber die Zuweisung des auszuführenden Methoden Namens müsste über eine Variable erfolgen die also je nach Kommando andere Namen enthält. Bei obiger Zeile will er aber die Funktion mit dem Namen "TargetFunction" ausführen die es natürlich nicht gibt.

Was kann man den machen, um diese Zuweisung per Variable zu ermöglichen?

Viele Grüße
Christian