Entwickler-Ecke

WinForms - Professionelles Startfenster


Csharp-programmierer - Do 28.04.16 18:51
Titel: Professionelles Startfenster
Hallo ihr Experten,
ich habe vor (nun in der neuen Version) ein Startfenster zu programmieren (wie in VS auch) wo dann die einzelnen Dateien deserialisiert werden und nach Updates gesucht wird. Was meinen die Experten? Ich muss danach ja mit jeder Methode danach auf die Klassen zugreifen können.

Mfg :)


Palladin007 - Do 28.04.16 22:02

Ähm, wie meinen? :D

Startfenster ist doch ganz schön, aber wie sollen wir beurteilen, ob das sinnvoll, schön, klug, etc. ist ohne zu wissen, was Du dir so vorstellst? :D
Wenn's gut aussieht und angenehm zu benutzen ist, ist's gut, würde ich mal sagen - rein auf die UI bezogen.

Der Unterbau kann ja völlig anders aussehen und wenn Du die UI brav von der Logik trennst, dann verstehe ich auch die Problematik im letzten Satz nicht :D


Csharp-programmierer - Fr 29.04.16 15:43

Also was haltet ihr von diesem Layout?Screenshot_39



Moderiert von user profile iconChristian S.: Neue Frage entfernt


Palladin007 - Fr 29.04.16 17:15

Wirklich viel ist da doch noch nicht?
Ist ein ganz normales Fenster in einem dunklen Design.
Allerdings wirkt alles noch etwas klobig, auch unabhängig von den Icons, aber ich denke, dass liegt daran, dass es nur zum Test ist?

Wenn Du vorhast, dass zu machen, wie es für Visual Studio gelöst wurde, kann ich dagegen nichts sagen, denn ich finde das ziemlich klasse.
Allerdings finde ich Arial (Ist doch Arial?) als Schrift nicht wirklich schön und die Icons (besonders rechts oben) finde ich noch sehr klobig. Im Vorbild sind die deutlich subtiler.


Csharp-programmierer - Fr 29.04.16 21:16

Also vorab muss man sagen, dass die Gestaltung der GUI reine Geschmackssache ist. Ich kann nur von meiner Seite aus sagen, dass ich die Gestaltung so perfekt finde.

Wenn ich dieses Layout in meinem kompletten Softwarekonzept durchsetze, sieht dies meiner Meinung nach professionell aus. Aber das ist ja Geschmackssache. Zum Gkück habe ich nicht mehr nur die langweiligen BorderStykes von Windows, wo alles so gleich aussieht. Deswegen bin ist "stolz" darauf.

Und nein, die Schriftart ist Sageo Sans

Nette Grüße,
Yannic M.


Christian S. - Fr 29.04.16 22:02

Was genau war Ziel dieser Frage
user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Also was haltet ihr von diesem Layout?

wenn Dir anscheinend die Antwort egal ist, weil Du eh alles perfekt findest? :gruebel:


Delphi-Laie - Fr 29.04.16 23:02

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Was meinen die Experten?


Wozu?

Das lag mir eigentlich schon von Anfang an auf der Zunge, doch ich hielt zunächst still.

Yannic, selten las ich in einem Forum eine unkonkretere Diskussionseröffnung als deine obige!


hydemarie - Sa 30.04.16 15:18

Ich finde allein die Nutzung eines "Startfensters" unprofessionell. :nixweiss:


Delphi-Laie - Sa 30.04.16 21:57

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
Ich finde allein die Nutzung eines "Startfensters" unprofessionell. :nixweiss:


Also nicht dieses, sondern generell (irgend)eines "Startfensters"?

Das oben vorgestellte "Startfenster" verdeckt irgendetwas darunterliegendes - und das unvollständig. Das empfinde ich wiederum als unschön oder eben "unprofessionell". Mag sein, daß der Benutzer das vorher schon ausreichend lange zu sehen bekam - wir jedoch nicht.


hydemarie - Sa 30.04.16 22:11

Eigentlich jedes.

Wenn mich meine trübe Erinnerung nicht täuscht, existieren diese "Startfenster" vor allem deshalb, damit der Start einer Anwendung nicht so furchtbar langsam wirkt. Man geht dem Nutzer also ohne einen Mehrwert für ihn (außer "uh, bunte Bildchen!") allein deshalb auf den Zeiger, weil man bei der Programmierung auf Effizienz gepfiffen hat. Find' ich nicht gut.


Delphi-Laie - Sa 30.04.16 22:30

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
Man geht dem Nutzer also ohne einen Mehrwert für ihn (außer "uh, bunte Bildchen!") allein deshalb auf den Zeiger, weil man bei der Programmierung auf Effizienz gepfiffen hat.


Auch bei qualitativ hochwertiger Programmierung auf Hochsprachenniveau kann es durchaus dauern. Was der Compiler und vor allem das Betriebsprogramm vorgeben, ist kaum noch zu überwinden/-listen.

Eine Mitteilung, daß der Start noch dauert, optimalerweise mit einer Fortschrittsanzeige oder gar Prozentangabe (wenn halbwegs zutreffend) tun es nicht nur auch, sondern sind ehrlicher, transparenter und haben wenigstens einen kleinen Mehrwert.

Leider gehen schon die Redmonder Betriebsprogramme mit schlechtem Beispiel voran und mit Eigenwerbung "auf den Zeiger".


hydemarie - Sa 30.04.16 22:32

Dass der Start noch dauert, merkt man als Benutzer normalerweise daran, dass noch kein Programmfenster zu sehen ist. Die sind doch nicht doof.


Palladin007 - So 01.05.16 03:52

Allerdings hatte ich es auch schon, dass ich mich dumm und dämlich gewartet gewartet hätte, wenn ich nicht mal einen Blick in die Prozesse geworfen und fest gestellt hätte, dass das Programm sich längst wegen irgendwas verabschieded hat.
Klar, wenn das so ist, gibts noch die Baustelle, dass sich das Programm ohne Meldung verabschieded und dass es sich überhaupt verabschieded.
Allerdings weiß ich bei irgendeinem Fenster - egal wie es nun aussehen mag - dass sich da etwas tut und mein Programm startet.


OlafSt - So 01.05.16 08:08

Wie oft kommt es vor, das der gemeine Benutzer denkt: Hab ich nun doppelt geklickt oder nicht ?

Nicht jeder schiebt die Verknüpfung von Delphi XE7 sofort auf die Taskleiste, wo ein einfacher Klick zum Starten genügt. Die allermeisten wissen ja nicht mal, das das geht. Wer dann mal Delphi gestartet hat wird verstehen, wozu die den Splash davorgelegt haben - bei mir dauert der Start von XE7 gute 45 Sekunden. In dieser Zeit hätte "Otto normal" längst fünf- oder sechsmal doppelt geklickt und somit 5 oder 6 Instanzen von Delphi gestartet, die sich nun allesamt gegenseitig die lahme Festplatte streitig machen. Und es dürfte etliche Applikationen geben, die ähnliche Startzeiten haben (TurboMed in einer Arztpraxis fällt mir ein - 2 Minuten auf einer schnelleren Maschine als ich sie habe).

Für solche Zwecke ist ein Splash wirklich sinnvoll. Was sich Microsoft allerdings mit Windows 10 ausgedacht hat (einfach ein nacktes Programmfenster darstellen und sonst nix, siehe Edge-Browser oder Store-App)... Das ist wie ein Schritt in die Steinzeit zurück.


jaenicke - So 01.05.16 10:03

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
Dass der Start noch dauert, merkt man als Benutzer normalerweise daran, dass noch kein Programmfenster zu sehen ist.
Bei uns war schon die Zeit zu lange bis der Splashscreen angezeigt wurde. Selbst da mussten wir noch dran optimieren...
Vorher wurde da schon noch einmal auf die Verknüpfung gedrückt. Wenn die Bediener nix sehen würden bis die Daten geladen und die Skripte kompiliert würden... das wäre eine Katastrophe.

Ein echter Splashscreen lohnt sich aber nur, wenn die Startseite auch signifikant ist. Ansonsten kann man ja einfach das Fenster der Anwendung schon anzeigen. Einen Splashscreen, der nur 1 Sekunde sichtbar ist, halte ich nicht für sinnvoll.

user profile iconOlafSt hat folgendes geschrieben Zum zitierten Posting springen:
Was sich Microsoft allerdings mit Windows 10 ausgedacht hat (einfach ein nacktes Programmfenster darstellen und sonst nix, siehe Edge-Browser oder Store-App)... Das ist wie ein Schritt in die Steinzeit zurück.
Naja... Für die kurze Wartezeit lohnt finde ich kein Splashscreen. Wie lange dauert das? 1 Sekunde?


Delphi-Laie - So 01.05.16 10:30

user profile iconOlafSt hat folgendes geschrieben Zum zitierten Posting springen:
Wie oft kommt es vor, das der gemeine Benutzer denkt: Hab ich nun doppelt geklickt oder nicht ?

Nicht jeder schiebt die Verknüpfung von Delphi XE7 sofort auf die Taskleiste, wo ein einfacher Klick zum Starten genügt.

[...]

In dieser Zeit hätte "Otto normal" längst fünf- oder sechsmal doppelt geklickt und somit 5 oder 6 Instanzen von Delphi gestartet, die sich nun allesamt gegenseitig die lahme Festplatte streitig machen.


Der schwachsinnige Doppelklick gehört zu den allerersten Windows-Einstellungen, die ich nach jeder Neuinstallation abstelle bzw. auf Einfachklick umstelle.

Leider dürften viele (die meisten?) aber nicht wissen, daß es diese Ein-/Umstellmöglichkeit überhaupt gibt, geschweige denn, wo.

Wieviele unnötig vorzeitig verschlissenen Mäuse hat Winzigweich allein deswegen auf dem Gewissen? Aber Verantwortungsbewußtsein gegenüber der Umwelt und zukünftigen Generationen ist ohnehin nicht Redmonds Kernkompetenz.


jaenicke - So 01.05.16 10:48

Ohne Doppelklick macht es mir keinen Spaß. Ich meine schon etwas anderes, wenn ich einmal klicke (Selektion) als wenn ich doppelklicke (Datei öffnen bzw. ausführen)...

Auf einem System, auf dem das anders eingestellt ist, klicke ich immer mit rechts und dann auf Ausführen oder auf Kopieren, weil ich sonst immer wieder falsch klicke, insbesondere in einer Fernwartung...

Dieses ganze "alles ist jetzt ein Hyperlink" ist als ob das ganze Betriebssystem nur noch ein Browserfenster ist...
Willkommen im Betriebssystem in der Cloud...

Es ist jedenfalls einfach Geschmackssache.

//edit:
Wenn bei einer Maus tatsächlich die linke Maustaste zuerst kaputt gegangen ist, waren es bei mir bisher immer nur Ramschmäuse für 5 oder 10 Euro oder so. Bei Qualitätsmäusen hatte ich das noch nie.


Delphi-Laie - So 01.05.16 10:57

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Es ist jedenfalls einfach Geschmackssache.


Sicher.

Doch dieser Doppelklick ist n.m.W. einzig eine Redmonder Angelegenheit. Bei anderen Betriebsprogrammem ist man automatisch "im Browser". Stört Dich das nicht?

Vielleicht kann man es aber auch woanders ein-/umstellen, genau weiß ich es nicht.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn bei einer Maus tatsächlich die linke Maustaste zuerst kaputt gegangen ist, waren es bei mir bisher immer nur Ramschmäuse für 5 oder 10 Euro oder so. Bei Qualitätsmäusen hatte ich das noch nie.


Meine billigste Maus kostete nur 1 € bei "Geiz, Geil und Blöd". Warum mehr bezahlen? So schlecht, daß sie ihren geringen Preis qualitativ unterbieten, waren bei mir Billigheimer (nicht nur Mäuse) noch nie.

Gegenfrage: Was verschleißt denn an einer Maus überhaupt anderes als die Klicksensoren (gerade bei den moderneren LED-basierten)? Eben deshalb sind hochwertige - und diese gerade! - Mäuse doch möglichst schonend zu behandeln. Dieses elende dämliche Doppelgeklicke halbiert die Nutzungsdauer fast.


Christian S. - So 01.05.16 11:03

Bitte beim Thema "Startbildschirm" bleiben! :mahn:


hydemarie - So 01.05.16 12:20

Warum? Das Thema war doch durch. :D

Ich darf im Büro täglich den faszinierend hilfreichen Startbildschirm von Visual Studio 2015 betrachten. Eine Verschwendung von Bildschirmplatz sondergleichen.

Vorbildlich allenfalls das Programm Sublight. Das zeigt eine Stoppuhr an.


jaenicke - So 01.05.16 17:16

Delphi zeigt zum Beispiel an was gerade geladen wird und per Addon auch wie viel Prozent schon geladen sind.
Diese Information finde ich bei längerer Ladezeit sehr hilfreich.


Csharp-programmierer - Mo 02.05.16 10:49

Vielen Dank für eure Kritik. Meine Frage ist jedoch wie ich das Start Fenster Anzeige. In dem Form1 Load Event oder soll ich das Start Fenster als Form1 machen?

Bei einem neuen Update soll der Benutzer über das Start Fenster informiert werden. Wo würdet ihr dieses Start Fenster erzeugen?


Ralf Jansen - Mo 02.05.16 10:55

Load Event ist ganz schlecht. Versuche niemals eine andere Form in Form.Load anzuzeigen.

Es kommt drauf an was du willst. Soll hinter deinem Fenster noch die eigentliche Hauptform zu sehen sein oder nicht?
Soll während das Startfenster angezeigt wird eine andere Form/Klasse/Thread noch irgendwas tun?


Csharp-programmierer - Mo 02.05.16 10:59

Ja. Ich möchte das das so ist wie in VS. Erst nur das Start Fenster und während dessen soll ein anderer Thread etwas erledigen.


hydemarie - Mo 02.05.16 16:50

"Vielen Dank für eure Kritik. Ich mach es trotzdem auf meine Art." :roll:


Ralf Jansen - Mo 02.05.16 17:40

Ich würde da vorschlagen einen eigenen ApplicationContext zu schreiben und an Application.Run [https://msdn.microsoft.com/de-de/library/ms157901.aspx] zu übergeben anstatt einer Form (der Mainform). In diesem ApplicationContext kannst du dann sauber die Lifetime deines Prozesses (erst Startform und Hintergrundthread ausführen und dann eine irgendwie geartete Hauptform anzeigen) steuern.


Csharp-programmierer - Mo 09.05.16 20:15

Zitat:
Ich würde da vorschlagen einen eigenen ApplicationContext zu schreiben und an Application.Run zu übergeben anstatt einer Form (der Mainform). In diesem ApplicationContext kannst du dann sauber die Lifetime deines Prozesses (erst Startform und Hintergrundthread ausführen und dann eine irgendwie geartete Hauptform anzeigen) steuern.


Ich habe mich über ApplicationContext ein wenig informiert, aber nicht wirklich etwas verstanden. Ich habe hier einfach mal Code geschrieben:

C#-Quelltext
1:
2:
3:
4:
5:
private void Form1_Load(object sender, EventArgs e)
        {
            Form2 context = new Form2();
            Application.Run(context);
        }



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public partial class Form2 : ApplicationContext
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            
        }
    }


Aber hier kommt immer der Fehler: Der Designer konnte für diese Datei nicht angezeigt werden, da keine der enthaltenen Klassen definiert werden kann. Der Designer hat folgende Klassen in der Datei überprüft:

Woran liegt das?


Ralf Jansen - Mo 09.05.16 20:27

Ein ApplicationContext ist keine Form auch wenn du die abgeleitete Klasse FormIrgendwas nennst. Es gibt also kein InitializeComponent oder Load Event.
Innerhalb der ApplicationContext Klasse kannst du natürlich Formen erzeugen und anzeigen.


Schafschaf - Di 10.05.16 07:35

Am Schlimmsten ist es bei Spielen. Da muss man sich beim Starten bestimmt mindestens 30 Sekunden lang die ganze EA, Ubisoft etc. und nvidia Proaganda angucken.
Da fällt einem so ein Splashscreen von einer uwp App gar nicht mehr auf :)