Laden...
W
WMenzel myCSharp.de - Member
jeetzt Rentner Eisenhüttenstadt Dabei seit 05.03.2012 28 Beiträge
Benutzerbeschreibung
C#-Anfänger

Forenbeiträge von WMenzel Ingesamt 28 Beiträge

06.08.2023 - 17:39 Uhr

Hallo, danke für die Hinweise, leider komme ich überhaupt nicht weiter.

ich starte die Anwendung im Debugger. Die Anwendung läuft tagelang ohne Probleme, bleibt dann aber plötzlich stehen. Nur der Windows-Kreisel dreht sich noch. Wenn ich den Debugger stoppe, dann kommt die Meldung, dass es zu lange dauert, stoppt dann aber. Allerdings bleibt dir Form offen, kann nur durch Windows-Neustart beendet werden.

Vielleicht gibt es ja noch eine Lösund!!???

Danke und Gruß

22.07.2023 - 15:14 Uhr

Hallo, danke für die Antwort. Leider war es nicht sehr hilfreich. Ich arbeite seit VS 2015 mit dem Programm, bin also auch mit dem Debugger vertraut. Breakpoint usw. nutzen mir gar nichts, weil die .EXE im Debug tagelang perfekt lauft und irgendwann aus welchem Grund auch immer, ohne jede Meldung stehen bleibt. Aber wie kann ich sehen, wo das Programm stehengeblieben ist? Ausserdem bleibt beim Beenden des Debuggers die Windows Form offen, sie läßt sich mit keiner Aktion schließen, nur duch Neustart Windows.

Vielleicht gibt es ja doch noch eine zündende Idee.

Gruß

Wolfgang

17.07.2023 - 18:17 Uhr

Hallo, ich habe bei der Programmentwicklung auch mal das Problem, daß die Exe abstürtzt. Nun kommt es vor, das ich dann die Form nicht mehr schließen kann, muss dann Windows 10 neu starten.

Leider habe ich noch keine Lösung dafür gefunden, es ist echt nervig.

Kann da jemand helfen??

Danke und sommerliche Grüße

Wolfgang

07.06.2022 - 21:05 Uhr

Hallo,
danke für die rege Anteilname.
Ich habe mich jetzt für ClosedXML entschieden. Das hat wunderbar geklappt und funktioniert problemlos. Auch alle nötigen Formatierungen klappen.
Gibt es gegen ClosedXML was zu sagen?

Gruß

06.06.2022 - 20:11 Uhr

Hm, ok, werde mich mal damit beschäftigen, danke für die Info.
Allerdings will ich noch anmerken: Wenn ich Excel vom Desktop öffne und gleich wieder schließe, dann funktioniert es auch aus C' heraus, allerdings nach kurzer Zeit wieder nicht mehr. Ich habe schon x Seiten in Google gelesen, aber es kommt kein zielführendes Ergebnis heraus, leider.
Hier im Forum gab es das Problem auch schon mal, aber offensichtlich ohne Ergebnis.

Gruß
Wolfgang

06.06.2022 - 16:42 Uhr

Hallo,
na ja, ich starte Excel natürlich nicht nur, um die Version auszulesen. Ich schaue in der Registrierung nach, ob Excel istalliert ist. Wenn ja, erstelle ich eine Instanz und ermittle die Version. Später erstelle ich mit Messdaten eine umfangreiche Excel-Tabelle mit Formatierungen.
Der Fehler kommt auch beim Starten der Anwendung. Da es ein Runtime-Error ist, vermute ich mal, das es am Excel liegt. Allerdings habe ich keine Idee, warum!! Bisher war es egal, ob ich mit 2019 oder 2022 gearbeitet habe. Die Idee war auch schon, eine ältere .Net zu verwenden. Eigentlich ist des doch so eine einfache Funktion, die Excel Instanz zu erzeugen, aber trotzdem...
Danke für euer Interesse.

03.06.2022 - 17:26 Uhr

Hallo, danke für die Antwort. Allerdings muss ich sagen, das es so lange Zeit schon mit Studio 2019 funktioniert hat und nun plötzlich nicht mehr geht.
Was kann da falsch sein? Ich weiß nicht weiter. Habe jetzt das Studio deinstalliert und installiere eine ältere Version, mal sehen, ob es wieder geht.
Gruß

03.06.2022 - 13:46 Uhr

Hallo,
ich benutze Windows10 und MS Studio Community 2022. Im Code verbinde ich mich mit Excel und lese die Version aus. Hat alles bisher geklappt. Neuerdings aber funktioniert das nur, wenn ich Excel vorher geöffnet habe. Ich habe den Verdacht, das es mit dem letzten Update vom Studio zu tun hat. Leider finde ich keine Lösung dafür. Die Version ist:
Microsoft Visual Studio Community 2022 (64-Bit) - Current Version 17.2.3

Hier mal den Code-Schnipsel:


     using Excel = Microsoft.Office.Interop.Excel;

     public void Officeversion()
      {
         var appVersion = new Excel.Application();
         appVersion.Visible = false;
         TExcelVersion.Text = appVersion.Version.ToString();
         // Excel wieder schließen
         appVersion.Quit();
         appVersion = null;
         GC.GetTotalMemory(false);
         GC.Collect();
         GC.WaitForPendingFinalizers();
         GC.Collect();
         GC.GetTotalMemory(true);
         //Excel-Process komplett beenden
         Process[] myProcesses;
         myProcesses = Process.GetProcessesByName("Excel");
         foreach (Process p in myProcesses)
         {
            p.Kill();
         }
      }

Ich habe noch ein jpg angehängt, wo man die Fehlermeldung sieht.

Würde mich ja über Ideen freuen.
Danke!

26.09.2020 - 21:10 Uhr

Hallo, danke für die Hinweise, die ich natürlich alle gerne ausprobiere und befolge.
Ich habe jetzt eine Lösung gefunden. Wenn ich in den Takleisten-Einstellungen den Punkt "Schaltflächen der Taskleiste gruppieren" auf "Nie" stelle, dann funktioniert es. Es gibt auch einen entsprechenden Registry-Eintrag dazu, Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced/TaskbarGlomLevel auf 1 oder 2 setzen.
Natürlich werde ich das mit NotifyIcon noch testen.

Gruß
Wolfgane

25.09.2020 - 20:03 Uhr

Ich bin ja fast am verzweifeln.
So habe ich es jetzt gelöst, verwende die Ressources:

     private void IconTausch(string Farbe)
      {
         switch (Farbe)
         {
            case "gn":
               Icon = Properties.Resources.Durchfluss_gnPunkt;
               break;
            case "rt":
               Icon = Properties.Resources.Durchfluss_rtPunkt;
               break;
         }
      }

In der Form wird alles richtig angezeigt, aber in der Taskleiste bleibt nur das Standard-Icon stehen und läßt sich auch nicht ändern.
Irgendwas stimmt noch nicht.

25.09.2020 - 17:39 Uhr

Ich habe mir gerade mal den Pfad zum Icon angeschaut, also das stimmt alles. Eigenartigerweise geht es in der IDE aber nicht mit der Verknüpfung zur exe

25.09.2020 - 17:14 Uhr

Hallo, StartPfad lese ich so aus:

public static string GetApplicationsPath()
      {
         FileInfo fi = new FileInfo(Assembly.GetEntryAssembly().Location);
         return fi.DirectoryName;
      }

Ich habe leider noch nichts gefunden, wie ich die Dateien, wo die Icons drin sind, als Ressource einlesen kann. Gibt es da was verständliches? Das von Microsoft ist alles sehr kompliziert.

Gruß

24.09.2020 - 17:53 Uhr

Hallo, ja ich meinte c# natürlich. Danke für die Korrektur.
Also ich wechsle das Icon mit "Icon = new Icon(StartPfad + "durchfluss_grünerpunkt.ico");
, wobei der Startpfad ist, wo die EXE liegt. Die Verknupfung auf dem Desktop greift doch auch auf diese Verzeichnis zu, so meine Überlegung. Leider gehts nicht.
Mit Ressource bin ich noch nicht so richtig klargekommen.

Gruß

24.09.2020 - 07:37 Uhr

Hallo,
ich habe ein C'-Programm erstellt, mit dem ein Meßsystem abgefragt wird. Wenn die Verbindung zum Messgerät und die Hardware ok sind, wird die Anwendung minimiert ausgeführt. Wenn alle Messwerte i.O. sind, soll als Icon in der Taskleiste ein großer grüner Punkt, bei Fehlern ein roter Punkt erscheinen (sieht dann aus wie eine LED). Das funktioniert in der IDE beim Debug einwandfrei, auch wenn ich .EXE direkt vom Ort starte, wo sie abgelegt ist. Starte ich dagegen über eine Desktop-Verknüpfung, erscheint nur das Standardsymbol.
Wer kann da helfen?
Danke schon mal

Gruß
Wolfgang

10.01.2020 - 09:36 Uhr

Hallo, danke erstmal für die Anregungen. Ich kann das jetzt aber nicht testen, weil ich dieses Problem durch die Installation und Deinstallation von VS gelöst habe, zwar nicht elegant und richtig aber der Zweck heiligt ja bekanntlich die Mittel.
Schwierig ist eben nur, weil ich keinerlei Fehlermeldungen bekomme, auch in der Ereignisanzeige steht nichts aussagekräftiges drin. DependencyWalker zeigt mir nur 2 Abhängigkeiten, die aber mitgeschickt werden.

09.01.2020 - 11:11 Uhr

Ich verwende die MbSlaveV7.ocx von WinTech schon seit Jahren (seit WindowsXP). Die OCX ist ordentlich im Windows registriert.
Ich müsste dann also x86: vc_redist.x86.exe bzw. x64: vc_redist.x64.exe beim Setup mitinstallieren?
Kann es jetzt leider nicht mehr ausprobieren, durch die Installation vom Studio läuft alles, muss es mir für das nächste Mal merken.
DependencyWalker zeigt mir nur 2 DLL's an, die ich aber mit übergebe. In der Ereignismeldung von Windows steht etwas von KernelBase.Dll, was aber völlig unverständlich ist.

Danke

08.01.2020 - 18:38 Uhr

Na dann gib mir doch bitte mal einen Tipp, wie ich die Software ordentlich verteilen soll. Wie gesagt, ich habe es mit Veröffentlichen und mit InnoSetup versucht, es ist immer das gleiche Ergebnis.
Gruß

08.01.2020 - 14:41 Uhr

Aber was ist mit der Lösung, dass ich VisualStudio auf dem Rechner, wo es nicht geht installiere und wieder lösche und es geht???? An den .Net-Versionen kann es nicht liegen, die sind gleich.
Ich habe eine Modbus-DLL, aber die ist in jeden Fall dabei.

08.01.2020 - 13:45 Uhr

Aber wie macht man es dann richtig? Mit Veröffentlichen habe ich ein Setup erstellt, das ging nicht und die Installation mit InnoSetup hat auch nicht funktioniert.

08.01.2020 - 09:07 Uhr

Betrifft: C#
In den meisten Fällen reicht es ja, die Dateien im Release-Ordner auf den PC zu kopieren, wo das Programm laufen soll. Hat bisher auch immer funktioniert!
Jetzt gab es das Problem, dass beim Anklicken der .exe der Cursor 2 Mal sich verändert, aber das Programm nicht startet, es kommt auch keine Fehlermeldung.
Es sind z.B. 2 PC's, auf einem funktioniert es, auf dem anderen nicht, sind beide mit Windows 10 aufgesetzt, das Framework ist gleich. Trotzdem funktioniert es auf einem PC nicht.
Ich habe auch mal mit der Veröffentlichung und mit InnoSetup ein Setup erstellt, aber das ging auch nicht.
Als einzige Lösung habe ich jetzt VS Studio auf dem nicht funktionierenden PC installiert und getestet, dann funktioniert es. Auf nach Deinstallation von VS Studio funktioniert es weiterhin.

Kann jemand was dazu schreiben, woran das liegen kann oder was der beste Weg ist, dieses Problem zu lösen.

Danke im Voraus

Gruß

26.04.2019 - 23:11 Uhr

PS:
Ich habe es so gemacht, aber da steht alles in einer Zeile:

     public void XML_Anzeigen()
      {
         XmlDocument doc = new XmlDocument();
         doc.Load(@"c:\temp\test.xml");
         XmlElement root = doc.DocumentElement;
         foreach (XmlNode daten in root.ChildNodes)
         {
            listBox1.Items.Add(daten.InnerXml);
         }
      }

nochmals Gruß

26.04.2019 - 23:08 Uhr

Hallo,
nachdem ich es geschafft habe, aus einer csv-Datei eine XML-Datei zu erstellen, möchte ich nun diese XML-Datei in einer Listbox hierarchisch darstellen. Ich habe schon danach gesucht, aber es wird alles immer nur mit einer konkreten Suche angegeben. Ich möchte aber eine beliebige XML-Datei darstellen, bei der ich die Struktur nicht kenne. Geht das überhaupt?
Danke und Gruß

04.04.2019 - 10:25 Uhr

Hallo, danke für die Infos. Ich habe es jetzt geschafft, mit XmlWriter die nötige Struktur zu erstellen, war ja gar nicht so schwer.

Ein Frage habe ich noch. Was ist der Unterschied zwischen

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

und

<?xml version="1.0" encoding="utf-8" standalone="true"?>

Grüsse
Wolfgang

18.01.2016 - 19:00 Uhr

Hallo, kann vielleicht mal jemand ein Beispiel einstellen? Ich habe ein Fenster, das zB Aktion heist, darin sind 3 Buttons - OK Druck Cancel
Das Fester kann ich erreichen, auch erkennen, ob es da ist oder nicht, aber ich schaffe es nicht, die Buttons anzusprechen.

Daaanke

Gruß
WOlfgang

03.12.2015 - 18:00 Uhr

Hallo, ich bekomme von einem Steuerungsprogramm ein Fenster, das Text und 3 Controls (Buttons) enthält. Ich kann zwar das Fenster Handle ermitteln, würde dann aber gerne situationsbedingt die Tasten betätigen. Wie kann man die Tasten dann betätigen? Ich könnte auch per sendkeys Tabs senden, aber wie weiß ich dann wieder, welche Taste gerade den Fokus hat, damit ich dann wieder per sendkeys ein Enter senden kann.

Ich hoffe, daß mich mal wieder jemand auf die Sprünge hilft.

Vielen Dank
Wolfgang

13.07.2015 - 21:48 Uhr

Hallo,

danke für die Hilfe und Denkanstöße. Habs jetzt, so funktioniert's:

            Excel.Worksheet activeSheet = null;
            Excel.QueryTables queryTables = null;
            Excel.QueryTable queryTable = null;
            Excel.Range insertRange = null;

            activeSheet = myExcelApplication.ActiveSheet;
            insertRange = activeSheet.Range["$A$1"];
            queryTables = activeSheet.QueryTables;
            queryTable = queryTables.Add("TEXT;" + anzresults[z], insertRange);
            queryTable.AdjustColumnWidth = true;
            queryTable.TextFileParseType = Excel.XlTextParsingType.xlDelimited;
            queryTable.TextFileTextQualifier =    Excel.XlTextQualifier.xlTextQualifierDoubleQuote;
            queryTable.TextFileCommaDelimiter = true;
            queryTable.Refresh();

Gruß
WOlfgang

10.07.2015 - 18:08 Uhr

Hallo,
ja danke, das hat schon mal geklappt, aber leider komme ich mit der Umsetzung von VBA na C# nicht so richtig klar. Ich bekomme folgenden Code:

.
.
.
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Agilent_Online\Online_Uni\Test_WME_Ori.csv", Destination:=Range( _
"$A$1"))
.CommandType = 0
.Name = "Test_WME_Ori"
.FieldNames = True
.
.
.
Ich schaffe es leider nicht, die with Anweisung vernünftig in C# zu übersetzen.

Danke und Gruß
Wolfgang

08.07.2015 - 20:57 Uhr

Hallo, ich möchte gerne 3 .csv-Dateien in ein Excel.Workbook eintragen und zwar so, das jede der 3 Dateien ein einzelnes Worksheet belegt. Leider macht Excel jedes Mal ein neues Workbook auf. Kann mir bitte jemand mit einer Idee helfen? Ich kann neue Worksheets erzeugen, auch darauf zugreifen, Zellen beschreiben, aber bekomme die 3 Dateien nicht einzeln in die Worksheets.

 myExcelWorkbook = (Excel.Workbook)(myExcelApplication.Workbooks.Add(System.Reflection.Missing.Value));
         myExcelWorkSheet = (Excel.Worksheet)myExcelApplication.Worksheets.Add();
         myExcelWorkSheet = (Excel.Worksheet)myExcelApplication.Worksheets.Add();
         ((Excel.Worksheet)myExcelWorkbook.Sheets["Sheet1"]).Select();
         ((Excel.Worksheet)myExcelWorkbook.Sheets["Sheet1"]).Name = "RSD's";
         ((Excel.Worksheet)myExcelWorkbook.Sheets["Sheet2"]).Select();
         ((Excel.Worksheet)myExcelWorkbook.Sheets["Sheet2"]).Name = "Konzentrationen";
         ((Excel.Worksheet)myExcelWorkbook.Sheets["Sheet3"]).Select();
         ((Excel.Worksheet)myExcelWorkbook.Sheets["Sheet3"]).Name = "Original";

Soweit ist alles ok, aber ich schaffe es nicht, in ein ausgewähltes und aktiviertes Arbeitsblatt eine vorher mit dem openFileDialog ausgewählte csv-Datei in das entsprechende Arbeitsblatt zu laden.

Wäre schön, wenn da jemand eine Idee hat.

Gruß
Wolfgang