zmh*_*zmh 10 c# dialog winforms windows-api-code-pack
我一直在研究Windows窗体应用程序,并且最近添加了一个简单的设置页面,允许用户选择输出所在的文件夹.OpenFileDialog是丑陋的,不好用,所以我已经在Windows API CodePack中添加了访问CommonOpenFileDialog-所有好处.
当我打开CommonOpenFileDialog时,Windows窗体应用程序缩小到较小的大小,如附加的图像所示.
左边是程序,右边是打开的对话框:
我之前和之后都试过检查表格的大小,这没有改变,所以我打了一个砖墙.任何信息都是有用的,如果需要我可以提供更多细节.
打开表单的代码是:
CommonOpenFileDialog dialog = new CommonOpenFileDialog();
dialog.DefaultDirectory = selectedFolderTextBox.Text;
dialog.IsFolderPicker = true;
if (dialog.ShowDialog() != CommonFileDialogResult.Ok) return;
selectedFolderTextBox.Text = dialog.FileName;
Run Code Online (Sandbox Code Playgroud)
Eli*_*ron 12
当我将windows Settings->System form 100% 中的Scale 和 layout更改为更高的值时,就会发生这个问题。它可能与高 DPI 和 DPI 缩放有关。
我找到了几个解决方案:
此解决方案仅适用于 .NET Framework 4.7 或更高版本。
将此添加到App.config文件中。
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
Run Code Online (Sandbox Code Playgroud)
来源:配置您的 Windows 窗体应用程序以获得高 DPI 支持:
在 app.config 文件中启用每个显示器的 DPI 感知。
Windows 窗体引入了一个新的 System.Windows.Forms.ApplicationConfigurationSection元素,以支持从 .NET Framework 4.7 开始添加的新功能和自定义。要利用支持高 DPI 的新功能,请将以下内容添加到您的应用程序配置文件中。
Run Code Online (Sandbox Code Playgroud)<System.Windows.Forms.ApplicationConfigurationSection> <add key="DpiAwareness" value="PerMonitorV2" /> </System.Windows.Forms.ApplicationConfigurationSection>
重要的
在 .NET Framework 的早期版本中,您使用清单来添加高 DPI 支持。不再推荐此方法,因为它会覆盖 app.config 文件中定义的设置。
使用Ookii.Dialogs.WinForms NuGet 包。它不存在收缩问题。它有一个VistaOpenFileDialog
类似于CommonFileDialog
WindowsAPICodePack 的。它还有一个不错的文件夹浏览器,VistaFolderBrowserDialog
例如CommonFileDialog
with IsFolderPicker
set to true
。
此解决方案需要单独手动更改每个应用程序 .exe 文件的兼容性设置,因此它不是最佳解决方案。
为此,您需要右键单击 .exe 文件,选择“属性”->“兼容性”->“更改高 DPI 设置”并选中“覆盖高 DPI 缩放行为”并选择其中一个选项(请参阅:如何在 Windows 10 中使用 DPI 缩放)修复模糊的旧应用程序)
小智 5
通过添加app.manifest文件启用dpi-aware,并取消注释此块.
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
Run Code Online (Sandbox Code Playgroud)
这适用于我的Surface Pro 4(dpi刻度200%).
归档时间: |
|
查看次数: |
1449 次 |
最近记录: |