Laden...

Forenbeiträge von Tommix Ingesamt 9 Beiträge

06.07.2023 - 15:06 Uhr

Es ist nicht wirklich wichtig und man kommt auch nur drauf wenn man Langeweile hat, aber der Vollständigkeit halber:

Wenn ich auf der Seite myCSharp Mitglieder https://mycsharp.de/users den unten versteckten Sortiermodus auf "Registriedatum" ändere und dann auf Seite 2 wechsele ist es wieder auf "Beiträge" zurückgesetzt. Ändere ich es noch mal bin ich wieder auf Seite 1 usw.

18.09.2022 - 13:11 Uhr

Alles klar, Danke.

  • Tommix
18.09.2022 - 10:20 Uhr

'Morgen,
ich habe folgenden Code (.NET 6), bitte auf Debatten über den Nutzwert zu verzichten:


string text = "Hallo";
Console.WriteLine($"{text}: {text.GetHashCode()}");

Aufruf 1:
Hallo: -498394817

Aufruf 2:
Hallo: -1111031154

Aufruf 3:
Hallo: 422895921

Müsste der Hashcode nicht immer gleich bleiben oder habe ich da was grundlegendes nicht verstanden?

Gruß Tommix

07.10.2021 - 07:44 Uhr

'Morgen,
das scheint was Windows 10 - spezifisches zu sein. Unter Vista funktioniert der Code mit der Korrektur von Abt aus Post2.

  • Tommix
03.10.2021 - 14:51 Uhr

Ja, klar. Und sicher nicht der Beste. Wenn ich mich recht entsinne (hab's mir mal mit ILSpy angeschaut) wird glaube ich zehn mal oder so der Kopiervorgang probiert bis bei Fehler eine Exception geworfen wird. Wenn ich ehrlich bin, war es auch eher die "Ich mach das jetzt seit 20 Jahren so, wieso geht das jetzt nicht mehr?"-Frage. Übrigens hier auch begründet: https://docs.microsoft.com/de-de/dotnet/core/compatibility/sdk/5.0/automatically-infer-winexe-output-type.

  • Tommix
03.10.2021 - 13:54 Uhr

Da hast Du recht. Ich hatte mein Beispiel zu weit reduziert, früher gab es bei dem fehlenden STAThreadAttribute eine Exception, da konnte man das nicht übersehen.

03.10.2021 - 13:35 Uhr

Hallo Abt,
ich habe ein paar Hausgebrauchs-Tools, die das Resultat per System.Windows.Forms.Clipboard.SetText in die Zwischenablage kopieren, damit ich es in Excel einfügen kann. Ich weiß, dass das nicht besonder elegant ist, aber für mich zum reinen Privatgebrauch ist es ok.

Eine Message Box bzw. Fenster kannst Du aus einer Console App aber niemals öffnen.

Da muss ich widersprechen, wie ich weiter oben postete, hat das bis .NET Core 3 noch funktioniert und in .NET 2-4 auch.
Allerdings hat der Post von david.m die Frage beantwortet, trotzdem Danke für die Zeit, die Du Dir genommen hast.

Gruss Tommix

Hallo David,
genau das hatte ich gesucht. Vielen Dank!

Tommix

03.10.2021 - 11:21 Uhr

Hallo,
wenn man auf "Wie poste ich richtig?" unter Punkt 6 auf "BBCode-Kurzreferenz" klickt kommt eine 404. Eine Zeile drüber scheint ein Verweis auf ein Bild auch nicht zu funktionieren.

Gruss Tommix

03.10.2021 - 11:16 Uhr

Hallo,
obwohl das Thema nach Windows Forms klingt wird es wohl bei WPF nicht anders sein, drum poste ich hier. Folgendes Szenario: Ich habe (hier als möglichst simples Beispiel) ein Konsolen-Programm, welches Windows Forms nutzt:


using System;
using System.Windows.Forms;

namespace Test
{
    class HelloWorld
    {
        static void Main()
        {
            Console.WriteLine("Hello world!");
            MessageBox.Show("Hello world!");
        }
    }
}

Unter .Net 4.x und vorher hat man einen Verweis auf System.Windows.Forms hinzugefügt und gut war. Unter .Net core musste ich die Projektdatei ändern:


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>

Soweit, so gut. Jetzt will ich das Gleiche mit .Net 5 machen.


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>

Führt zu> Fehlermeldung:

error NETSDK1136: Die Zielplattform muss auf Windows festgelegt werden (üblicherweise durch Einbeziehen von "-windows" in die TargetFramework-Eigenschaft), wenn Windows Forms oder WPF verwendet wird oder auf Projekte oder Pakete verwiesen wird, die dies tun.

Also:


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>

Jetzt läuft es zwar, die MessageBox erscheint, aber ich bekomme keine Ausgabe auf der Konsole. Im Debugger geht gar kein Konsolenfenster auf und wenn ich es aus der Kommandozeile starte, fehlt die Ausgabe. Das es bei Target Windows-Anwendung keine Konsole gibt, war schon immer so. Aber ich will ja nun gerade eine Konsolen-Anwendung haben und nur auf die Klassen aus Windows-Forms zugreifen. Wenn ich google lande ich immer nut bei dem Tip mit dem UseWindowsForms aber vielleicht formuliere ich die Frage auch falsch. Bin für jeden Denkanstoß dankbar.

Gruss Tommix