バージョンがリリースされました: .NET 9
app.manifestから高 DPI 設定を削除し、Application.SetHighDpiMode API または
ApplicationHighDpiMode
プロジェクト プロパティを使用して構成します。
Windows フォーム アプリケーションでは、アプリケーション構成または Application.SetHighDpiMode API を使用して、アプリケーションの DPI 認識を指定する必要があります。
例
プロジェクトには、app.manifest設定を含む<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>
この警告を修正するには
Windows フォーム アプリケーションでは、アプリケーション構成または Application.SetHighDpiMode API を使用して、アプリケーションの DPI 認識を指定する必要があります。
C# の使用
ApplicationConfiguration.Initialize
する前に、Application.Run() メソッドを呼び出します。
class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
この ApplicationConfiguration.Initialize
メソッドは、アプリのプロジェクト ファイルの設定に基づいて、アプリのコンパイル時に生成されます。 たとえば、次の <Application*>
設定を確認します。
<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>
これらの設定により、次のメソッドが生成されます。
[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));
}
}
Visual Basic の使用
Visual Basic では、高 DPI モードが 2 か所に設定されます。 1 つ目はプロジェクトのプロパティです。これは Visual Studio Designer に影響しますが、実行時にアプリには影響しません。
<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>
2 番目の場所は、Visual Basic Application Framework の設定です。 これらは、プロジェクトのプロパティ ページの Application>Application Framework にあります。 これらの設定は、 My Project\Application.myapp ファイルまたはアプリケーション起動イベント ハンドラーに保存されます。
Visual Basic でのフォントの設定
ただし、実行時フォントは、アプリ設定またはプロジェクト ファイルを通じて Visual Basic では構成できません。 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
警告を管理する
次のいずれかの方法で警告を抑制します。
.NET Desktop feedback