Moin!
Ich bin C# Anfänger!
Ich arbeite mit Visual Studio 2022, wo vieles im Hintergrund zur Verfügung gestellt wird, unter Win10 und habe den Entwicklermodus [noch] nicht aktiviert.
Für eine Übung, eine Consolen-Anwendung, möchte ich die Größe des aktuellen Bildschirms mit nach stehendem Code ermitteln.
Nichts aber davon läuft.
// Ausmaße des aktuellen Bildschirms ermitteln ...
// Version 1
int Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
int Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
//Version 2
double height = SystemParameters.FullPrimaryScreenHeight;
double width = SystemParameters.FullPrimaryScreenWidth;
double resolution = height * width;
// Version 3
System.Windows.SystemParameters.PrimaryScreenWidth;
System.Windows.SystemParameters.PrimaryScreenHeight;
// Version 4
int screenHeight = Screen.PrimaryScreen.Bounds.Height;
int screenWidth = Screen.PrimaryScreen.Bounds.Width;
// Ausmaße des aktuellen Bildschirms ermitteln
VS2022 kann mit »Screen«; »Forms«; »Systemparameters«, etc. nichts anfangen.
Was habe ich weggelassen/vergessen/übersehen?
mfg hans
An dem Namensbereich System.Windows.Forms
ist ersichtlich, daß für diese der gleichnamige Verweis (auf die Assembly) erforderlich ist, welche in einem Konsolenprojekt (im Gegensatz zu einem Windows-Forms-Projekt) nicht voreingestellt ist.
Bei einem .NET Framework 4.x Projekt mußt du also bei deinem Projekt "Verweis hinzufügen" auswählen und dann die System.Windows.Forms
-Assembly hinzufügen.
Bei neueren .NET5/6-Projekten s. z.B. Konsole+Windows Forms in .NET 5
An dem Namensbereich
System.Windows.Forms
ist ersichtlich, daß für diese der gleichnamige Verweis (auf die Assembly) erforderlich ist, welche in einem Konsolenprojekt (im Gegensatz zu einem Windows-Forms-Projekt) nicht voreingestellt ist.
[...]
Moin!
Vielen Dank, aber ich glaube, das ganze ist für die Fingerübungen eines Anfängers, mit/in einem Konsolenprojekt, zu umständlich/aufwändig!
mfg hans
So funktioniert nun mal das System, ob Dir das gefällt oder nicht.
Das kann niemand ändern, völlig egal ob Anfänger-Stand oder nicht, musst halt erlernen. Hab alle gemusst.
Dem System ist Dein Wissensstand egal. Muss man akzeptieren und durch, in dem Fall auch Du.
Beschweren bringt nichts - vor allem nicht in einem Forum.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Für den Anfang ist es einfacher ein Winforms oder WPF Projekt anzulegen, da hat man die gewünschten Funktionen sofort zur Verfügung.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Für den Anfang ist es einfacher ein Winforms oder WPF Projekt anzulegen, da hat man die gewünschten Funktionen sofort zur Verfügung.
Grüße Bernd
Moin!
Ja, die Erfahrung habe ich heute Nachmittag auch gemacht.
Eine FormaApp gestartet und mit Steuerelementen gearbeitet.
Das erscheint mir für einen Anfänger besser geeignet, als mit einer ConsolenApp.
mfg hans
Hallo,
es kommt wie immer drauf an.
Wenn du dich mit den Grundlagen beschäftigen willst, zum Beispiel Vererbung, Werttypen, Verweistypen, Schleifen, Listen, usw. oder auch debuggen, dann macht sich eine Konsolenanwendung meistens besser. Man kann sich vieles sofort in der Konsole ausgeben lassen.
Wenn du aber etwas machen willst, was mit der Oberfläche zusammenhängt, dann nimm Winforms.
Weiterhin kann man sich z.B. ein Windows Forms Projekt anlegen und die gewünschten Ergebnisse auf der Konsole (o.ä) ausgeben lassen. Einen einfachen Button auf einer WinForms GUI platzieren und dessen _Click-Methode erweitern könnte so aussehen:
private void button1_Click(object sender, EventArgs e)
{
int Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
int Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
Console.WriteLine("Width :" + Width);
Console.WriteLine("Height :" + Height);
Console.ReadLine();
}
Ausgabe (z.B.) nach Klick auf "Run" beim Debuggen:
...
Width :1280
Height :1024
Allerdings sollte man erst auf Kommandozeile üben, später dann im GUI-Bereich
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉
Weiterhin kann man sich z.B. ein Windows Forms Projekt anlegen und
[...]
Moin!
Vielen Dank!
Bin im Moment weg von der Konsole und hin zur Form und
habe, als Fingerübung, damit begonnen, einen Oberfläche zusammenzuklöppeln,
die ich ähnlich, wie zu DOS-Zeiten, in der Konsole gestalten wollte ...
mfg hans
Bezogen auf deinen Screenshot (und der Annahme, daß du dies alles händisch im Designer erstellt hast), möchte ich dir gleich [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls empfehlen (auch wenn es nur ein Testprogramm für dich ist, aber ich will dir unnötige Arbeit ersparen).
Moin!
Vielen Dank, werde ich mir ansehen und durcharbeiten.
Ich bin dabei, diese Oberfläche, zur Laufzeit,
mit drei Schleifen zu erzeugen
die Elemente, in/mit den Schleifen zu positionieren
und ihnen alle nötigen Eigenschaften mitzugeben.
Wie schon gesagt, ohne großen Anspruch, nur als Fingerübung,
damit das Hirn etwas zu tun hat - und es macht Spaß.
Ich erlebe C# nun sehr Entwicklerfreundlich.
mfg hans
Oberfläche zusammenzuklöppeln,
Evtl. hat VS auch Container anzubieten, welche sich (im Hintergrund) um die Initialisierung, Ansprache, Formatierung, Funktionalität,... der untergeordneten Elemente kümmern. Im konkreten Fall z.B. eine DataGridView mit mehreren Spalten und DGVComboBoxColumn als ColumnType (s. Anhang)
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉
Moin!
Das kommt sicher als nächstes dran!
mfg hans