[英]WinForms: How to fix incorrect scaling of Forms in high-DPI, multi-monitor environments (PerMonitorV2) with different resolution/scaling
[英].NET WinForms high DPI Scaling - how to force forms to display correctly after display settings change?
我有一個內置於 .NET Core 3.1 的 WinForms 應用程序,在高 DPI 顯示器上運行良好。 我的問題是,每當在 Windows 中添加或刪除新顯示器時,forms 就會再次獲得模糊的外觀。 重新啟動應用程序可以解決此問題,但我想在發生這種情況時適當地重新繪制 forms。
我想我已經找到了要訂閱的適當系統事件,但我無法讓 forms 正確重繪/重繪自己。
訂閱 Windows 事件 DisplaySettingsChanged 如下:
using Microsoft.Win32;
(...)
SystemEvents.DisplaySettingsChanged += new EventHandler(UpdateDpiOnOpenForms);
然后添加我無法工作的事件處理程序方法:
public static void UpdateDpiOnOpenForms(object sender, EventArgs e)
{
foreach (Form f in Application.OpenForms)
{
//What would the correct command be here?
}
}
如何像應用程序啟動后一樣,使用新的默認高 DPI 設置強制所有打開的 forms 重繪/重繪?
使用 Control.Invalidate() 方法。
"使控件的指定區域無效(將其添加到控件的更新區域,這是將在下一次繪制操作中重新繪制的區域),並導致將繪制消息發送到控件。可選地,使子控件無效分配給控制。”
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.invalidate?view=net-5.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.