Anwendung, die mit VS 2015, C #, Winforms unter Verwendung des DateTimePicker-Windows-Steuerelements erstellt wurde, wird nach der Aktualisierung von Computern auf das Windows Creators Update verstümmelt.
Hat irgendjemand sonst schon etwas davon erfahren oder gibt es irgendwelche Vorschläge für eine Arbeit?
Haben Sie ein High-DPI-Display? Selbst wenn Sie dies nicht tun, besteht die Chance, dass die aktualisierte dpi-Skalierung hier fehlerhaft ist. Wenn dies der Fall ist, können Sie dies möglicherweise einfach beheben, indem Sie einen Wert in dpiAware
und dpiAwareness
-Werte der Manifestdatei für Ihr Projekt wie hier beschrieben festlegen:
High-DPI-Skalierungsverbesserungen für Desktop-Anwendungen im Windows 10 Creators Update
Ich musste das noch nicht selbst machen, also kann ich Ihnen im Moment nur zeigen, wo Sie suchen sollten, und nicht darauf, was genau die richtigen Werte für Ihre Situation sein sollten.
Auch wenn dies nicht Ihr Problem ist, möchten Sie vielleicht ein paar Minuten damit verbringen, zu überprüfen, ob Ihre App in Situationen mit hoher DPI gut funktioniert. Es ist auch eine anständige Entschuldigung, um Ihre Firma zu bekommen, um Ihnen einen schönen neuen Monitor zu kaufen:)
So hat Windows 10 1703 einige neue Herausforderungen eingeführt, darunter diese seltsame Weigerung, ein Datum im DateTimePicker-Steuerelement anzuzeigen, es sei denn, Sie aktivieren das Kontrollkästchen "XP visuellen Stil aktivieren" für die Anwendung (oder programmgesteuert). Dieser Tweak behebt das Problem der Datumswiedergabe, aber jetzt werden andere Steuerelemente wie Dropdown-Boxen, Dropdown-Listen, Textfelder und Schaltflächen flach und trist. Nicht gut. Was wir brauchen, ist eine echte Korrektur, die den "XP visual style" überflüssig macht, oder ist Windows Forms Programmierung auf dem Weg nach draußen und daher nicht interessant zu unterstützen?
Ich bin heute auch auf dieses Thema gestoßen. Mein Datetimepicker wurde sehr zufällig wiedergegeben, aber niemals akzeptiert. Ich habe dies als eine Art Workaround: Meine Umgebung ist VS2015, .net 3.5 und winforms Meine Einrichtung ist Surface Pro 3 mit dem neuen Andockfenster und 2 externen Monitoren res 2560x1440 und 100% Skalierung. App.manifest zu meinem Projekt hinzugefügt, wie ich es vorher nicht hatte. Die dpiAware wurde hinzugefügt, damit app.manifest wie folgt aussehen kann:
%Vor%Ich habe auch den AutoScaleMode in meinem Formular auf "None" gesetzt (habe aber ungefähr das gleiche Ergebnis mit "Inherited" erhalten). Die dpiAware schien zu helfen (aber nicht 100% stabil). Dies funktioniert, wenn Sie eine kompilierte Anwendung ausführen, aber funktioniert nicht beim Debuggen von Visual Studio. Dann bekomme ich nur einen Punkt (.), Der mein Datumstrennungszeichen ist.
Beispiel für datetimepicker nach dem Update auf das Ersteller-Update nach dem Anwenden der Problemumgehung beim Ausführen der kompilierten Exe
Dies kann ein wenig helfen, wenn die Anwendung nicht auf .net 4.7
aktualisiert werden kannAlso haben wir die Manifest-Datei gelöscht und das Steuerelement wird nun korrekt gerendert. Was ist seltsam ist nur die Tatsache, eine neue Manifest-Datei mit nur einem AssemblyIdentity-Tag mit der Version und Namen enthält, verursacht dieses Windows-Steuerelement ausflippen. Ich weiß, dass für andere das Löschen des Manifests keine Option ist, aber das hat unser Problem behoben.
Ich habe die meisten Vorschläge hier und an anderen Stellen einschließlich manifester Änderungen, .NET 4.7 usw. ausprobiert. Eine zusätzliche Änderung, die in meinem Setup erforderlich war, bestand jedoch darin, die CalendarFont-Größe für das Steuerelement selbst zu erhöhen.
Der Standardwert für mein System war 7.875. Durch die Änderung auf 10 Punkt wurde das Anzeigeproblem korrigiert (durch Änderung auf einen geringfügig niedrigeren Wert wurde die Anzeige verbessert, aber nicht korrigiert).
Haftungsausschluss: Dies wurde nicht gründlich getestet und könnte andere Szenarien durchbrechen. Diese Information soll helfen, eine endgültige Lösung zu finden.
Ein Update für dieses Problem wird voraussichtlich im kumulativen Update für Windows für Juni 2007 enthalten sein.
Dies ist ein Fehler in der Date Time Picker-Kontrolle in COMCTL32.DLL Version 5 implementiert. Es sollte eine Lösung für dieses Problem in naher Zukunft.
Das in COMCTL32.DLL, Version 6, implementierte Steuerelement für die Zeitauswahl scheint von diesem Problem nicht betroffen zu sein.