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 Tommix
Thema: Rectangle von Rechner-Fenster anzeigen
Am im Forum: GUI: Windows-Forms

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

- Tommix

Thema: Konsole+Windows Forms in .NET 5
Am im Forum: Grundlagen von C#

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

Thema: Konsole+Windows Forms in .NET 5
Am im Forum: Grundlagen von C#

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.

Thema: Konsole+Windows Forms in .NET 5
Am im Forum: Grundlagen von C#

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.

Zitat
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

Thema: Toter Link auf "Wie poste ich richtig?"
Am im Forum: Wünsche und Kritik

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

Thema: Konsole+Windows Forms in .NET 5
Am im Forum: Grundlagen von C#

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
Fehler
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