Ostrzeżenie kompilatora WFO0003

Wersja wprowadzona: .NET 9

Usuń ustawienia wysokiej rozdzielczości DPI z app.manifest i skonfiguruj za pomocą interfejsu API Application.SetHighDpiMode lub właściwości projektu ApplicationHighDpiMode.

Aplikacje Windows Forms powinny określać rozpoznawanie dpi aplikacji za pośrednictwem konfiguracji aplikacji lub interfejsu Application.SetHighDpiMode API.

Przykład

Projekt zawiera plik app.manifest z ustawieniem <dpiAware>:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <!-- other settings omitted for brevity -->
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
</assembly>

Aby poprawić to ostrzeżenie

Aplikacje Windows Forms powinny określać rozpoznawanie dpi aplikacji za pośrednictwem konfiguracji aplikacji lub interfejsu Application.SetHighDpiMode API.

Przy użyciu języka C#

Wywołaj metodę ApplicationConfiguration.Initialize przed Application.Run().

class Program
{
    [STAThread]
    static void Main()
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new Form1());
    }
}

Metoda ApplicationConfiguration.Initialize jest generowana podczas kompilowania aplikacji na podstawie ustawień w pliku projektu aplikacji. Na przykład zapoznaj się z następującymi <Application*> ustawieniami:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net9.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>

    <ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
    <ApplicationVisualStyles>true</ApplicationVisualStyles>
    <ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
    <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>

  </PropertyGroup>

</Project>

Te ustawienia generują następującą metodę:

[CompilerGenerated]
internal static partial class ApplicationConfiguration
{
    public static void Initialize()
    {
        global::System.Windows.Forms.Application.EnableVisualStyles();
        global::System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
        global::System.Windows.Forms.Application.SetHighDpiMode(HighDpiMode.SystemAware);
        global::System.Windows.Forms.Application.SetDefaultFont(new Font(new FontFamily("Microsoft Sans Serif"), 8.25f, (FontStyle)0, (GraphicsUnit)3));
    }
}

Korzystanie z języka Visual Basic

Visual Basic ustawia tryb wysokiej dpi w dwóch miejscach. Pierwszy element znajduje się we właściwościach projektu, które wpływają na projektanta programu Visual Studio, ale nie ma wpływu na aplikację w czasie wykonywania.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net9.0-windows</TargetFramework>
    <StartupObject>Sub Main</StartupObject>
    <UseWindowsForms>true</UseWindowsForms>
    <MyType>WindowsForms</MyType>

    <ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
    <ApplicationVisualStyles>false</ApplicationVisualStyles>
    <ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
    <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>

  </PropertyGroup>

</Project>

Drugie miejsce znajduje się w ustawieniach programu Visual Basic Application Framework. Znajdują się one na stronie właściwości projektu w obszarze Application>Framework. Te ustawienia są zapisywane w pliku My Project\Application.myapp lub w programie obsługi zdarzeń uruchamiania aplikacji.

Ustawianie czcionki w Visual Basic

Czcionka w czasie wykonywania nie jest jednak konfigurowalna w języku Visual Basic za pomocą ustawienia aplikacji ani pliku projektu. Należy go ustawić w procedurze obsługi zdarzeń ApplyApplicationDefaults .

Imports Microsoft.VisualBasic.ApplicationServices

Namespace My
    Partial Friend Class MyApplication
        Private Sub MyApplication_ApplyApplicationDefaults(sender As Object, e As ApplyApplicationDefaultsEventArgs) Handles Me.ApplyApplicationDefaults
            e.HighDpiMode = HighDpiMode.SystemAware
            e.Font = New Font("Microsoft Sans Serif", 8.25)
        End Sub
    End Class
End Namespace

Zarządzanie ostrzeżeniem

Pomiń ostrzeżenie przy użyciu jednej z następujących metod:

  • Ustaw stopień ważności reguły w pliku .editorConfig.

    [*.{cs,vb}]
    dotnet_diagnostic.WFO0003.severity = none
    

    Aby uzyskać więcej informacji na temat plików konfiguracji edytora, zobacz Pliki konfiguracji dla reguł analizy kodu.

  • Dodaj kod PropertyGroup do pliku projektu.

    <PropertyGroup>
        <NoWarn>$(NoWarn);WFO0003</NoWarn>
    </PropertyGroup>
    
  • Zastosuj pominięcie w kodzie za pomocą dyrektywy #pragma warning disable WFO0003.