Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Vanaf .NET Framework 4.7 bevat Windows Forms verbeteringen voor veelvoorkomende hoge DPI- en dynamische DPI-scenario's. Deze omvatten:
Verbeteringen in het schalen en de indeling van een aantal Besturingselementen voor Windows Forms, zoals het MonthCalendar besturingselement en het CheckedListBox besturingselement.
Schaalaanpassing in één keer. In de .NET Framework 4.6- en eerdere versies is schalen uitgevoerd via meerdere passen, waardoor sommige besturingselementen meer worden geschaald dan nodig was.
Ondersteuning voor dynamische DPI-scenario's waarin de gebruiker de DPI of schaalfactor wijzigt nadat een Windows Forms-toepassing is gestart.
In versies van .NET Framework vanaf .NET Framework 4.7 is verbeterde hoge DPI-ondersteuning een opt-in-functie. U moet uw toepassing configureren om er gebruik van te kunnen maken.
Uw Windows Forms-app configureren voor hoge DPI-ondersteuning
Belangrijk
Deze informatie is alleen van toepassing op .NET Framework. Zie Toepassingsinstellingen op projectniveau om hoge DPI-ondersteuning in te schakelen in .NET.
De nieuwe Windows Forms-functies die ondersteuning bieden voor hoge DPI-kennis zijn alleen beschikbaar in toepassingen die gericht zijn op .NET Framework 4.7 en worden uitgevoerd op Windows-besturingssystemen vanaf de Windows 10 Creators Update.
Als u bovendien hoge DPI-ondersteuning wilt configureren in uw Windows Forms-toepassing, moet u het volgende doen:
Compatibiliteit met Windows 10 declareren.
Voeg hiervoor het volgende toe aan uw manifestbestand:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 10 compatibility --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> </application> </compatibility>Schakel DPI-bewustzijn per monitor in het app.config-bestand in.
Windows Forms introduceert een nieuw
<System.Windows.Forms.ApplicationConfigurationSection>element ter ondersteuning van nieuwe functies en aanpassingen die zijn toegevoegd vanaf .NET Framework 4.7. Als u wilt profiteren van de nieuwe functies die hoge DPI ondersteunen, voegt u het volgende toe aan uw toepassingsconfiguratiebestand.<configuration> <!-- ... other xml settings ... --> <System.Windows.Forms.ApplicationConfigurationSection> <add key="DpiAwareness" value="PerMonitorV2" /> </System.Windows.Forms.ApplicationConfigurationSection> </configuration>Belangrijk
In eerdere versies van .NET Framework hebt u het manifest gebruikt om hoge DPI-ondersteuning toe te voegen. Deze methode wordt niet meer aanbevolen, omdat hiermee instellingen worden overschreven die zijn gedefinieerd in het app.config-bestand.
Roep de statische EnableVisualStyles methode aan.
Dit moet de eerste methode-aanroep zijn in uw toepassingsinvoerpunt. Voorbeeld:
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form2()); }
Uitschakelen van specifieke hoge DPI-functies
Belangrijk
Deze informatie is alleen van toepassing op .NET Framework. Zie Toepassingsinstellingen op projectniveau om hoge DPI-ondersteuning in te schakelen in .NET.
Als u de DpiAwareness-waarde instelt op PerMonitorV2, worden alle functies voor hoge DPI-bewustzijn ingeschakeld die ondersteund worden door .NET Framework-versies vanaf .NET Framework 4.7. Dit is doorgaans voldoende voor de meeste Windows Forms-toepassingen. Het is echter mogelijk dat u ervoor kiest om u af te melden voor een of meer individuele functies. De belangrijkste reden hiervoor is dat uw bestaande toepassingscode die functie al verwerkt. Als uw toepassing bijvoorbeeld automatisch schalen afhandelt, kunt u de functie voor automatisch wijzigen als volgt uitschakelen:
<configuration>
<!-- ... other xml settings ... -->
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
Zie Het element Configuratie toevoegen van Windows Forms voor een lijst met afzonderlijke sleutels en de bijbehorende waarden.
Nieuwe DPI-wijzigingsevenementen
Vanaf .NET Framework 4.7 kunt u met drie nieuwe gebeurtenissen dynamische DPI-wijzigingen programmatisch afhandelen:
- DpiChangedAfterParent, die wordt geactiveerd wanneer de DPI-instelling van een besturingselement programmatisch wordt aangepast, nadat er een DPI-wijzigingsgebeurtenis voor het ouder-besturingselement of formulier heeft plaatsgevonden.
- DpiChangedBeforeParent, die wordt geactiveerd wanneer de DPI-instelling voor een besturingselement programmatisch wordt gewijzigd voordat een DPI-wijzigingsgebeurtenis voor het bovenliggende besturingselement of formulier is opgetreden.
- DpiChanged, dat wordt geactiveerd wanneer de DPI-instelling wordt gewijzigd op het weergaveapparaat waarop het formulier momenteel wordt weergegeven.
Nieuwe helpermethoden en -eigenschappen
Met .NET Framework 4.7 worden ook een aantal nieuwe helpermethoden en -eigenschappen toegevoegd die informatie bieden over DPI-schaalaanpassing en waarmee u DPI-schaalaanpassing kunt uitvoeren. Deze omvatten:
LogicalToDeviceUnits, waarmee een waarde van logische naar apparaat pixels wordt geconverteerd.
ScaleBitmapLogicalToDevice, waarmee een bitmapafbeelding wordt geschaald naar de logische DPI voor een apparaat.
DeviceDpi, waarmee de DPI voor het huidige apparaat wordt geretourneerd.
Overwegingen voor versiebeheer
Naast het uitvoeren op .NET Framework 4.7 en Windows 10 Creators Update, kan uw toepassing ook worden uitgevoerd in een omgeving waarin deze niet compatibel is met hoge DPI-verbeteringen. In dit geval moet u een terugval voor uw toepassing ontwikkelen. U kunt dit doen om aangepast tekenen uit te voeren om met schalen om te gaan.
Hiervoor moet u ook het besturingssysteem bepalen waarop uw app wordt uitgevoerd. U kunt dit doen met code als de volgende:
// Create a reference to the OS version of Windows 10 Creators Update.
Version OsMinVersion = new Version(10, 0, 15063, 0);
// Access the platform/version of the current OS.
Console.WriteLine(Environment.OSVersion.Platform.ToString());
Console.WriteLine(Environment.OSVersion.VersionString);
// Compare the current version to the minimum required version.
Console.WriteLine(Environment.OSVersion.Version.CompareTo(OsMinVersion));
Houd er rekening mee dat uw toepassing Windows 10 niet kan detecteren als deze niet wordt vermeld als een ondersteund besturingssysteem in het toepassingsmanifest.
U kunt ook de versie van .NET Framework controleren waarop de toepassing is gebouwd:
Console.WriteLine(AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName);
Zie ook
.NET Desktop feedback