Предотвращение масштабирования формы - осведомленность о DPI - PullRequest
0 голосов
/ 11 октября 2018

В Visual Studio 2017 была добавлена ​​функция «DPI Aware».При заполнении таблицы данных с помощью этой команды:

    Dim dt As DataTable = New DataTable
    da.Fill(dt) <---- This is the line where the rescaling occurs

В строке выше форма будет масштабироваться до меньшего размера, чтобы соответствовать тому, что монитор установил для своего свойства масштаба в Windows.Как мне предотвратить это?Я не хочу, чтобы форма масштабировалась и изменяла размер, а просто оставалась такой, какой она была.

Примечание. Я знаю, что вы можете перезапустить Visual Studio в состоянии «DPI unaware», но даже в этом состоянии проблема, описанная вышепроисходит при запуске приложения.

1 Ответ

0 голосов
/ 11 октября 2018

Вот как решить эту проблему:

  1. В Visual Studio щелкните правой кнопкой мыши свой проект> Add> New Item..
  2. Выберите Application.Manifest File из параметров,Оставьте имя по умолчанию app.manifest.Нажмите Add.Это создаст манифест для вашего проекта.(Примечание: по умолчанию ваше приложение не включает файл манифеста.
  3. Откройте вновь созданный файл манифеста. Все должно быть уже заполнено. Раскомментируйте этот раздел (удалив <!-- переди --> после):

<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware> </windowsSettings> </application>

Сохраните файл манифеста и скомпилируйте.Ваши формы больше не будут масштабироваться.

Заполните файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
 <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <!-- UAC Manifest Options
         If you want to change the Windows User Account Control level replace the 
         requestedExecutionLevel node with one of the following.

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

        Specifying requestedExecutionLevel element will disable file and registry virtualization. 
        Remove this element if your application requires this virtualization for backwards
        compatibility.
    -->
    <requestedExecutionLevel level="asInvoker" uiAccess="false" />
  </requestedPrivileges>
</security>
</trustInfo>

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
  <!-- A list of the Windows versions that this application has been tested on
       and is designed to work with. Uncomment the appropriate elements
       and Windows will automatically select the most compatible environment. -->

  <!-- Windows Vista -->
  <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->

  <!-- Windows 7 -->
  <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->

  <!-- Windows 8 -->
  <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->

  <!-- Windows 8.1 -->
  <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->

  <!-- Windows 10 -->
  <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->

</application>
</compatibility>

<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
   DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need 
   to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should 
   also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->

<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
  <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
</windowsSettings>
</application>


<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!--
<dependency>
<dependentAssembly>
  <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*"
    />
</dependentAssembly>
</dependency>
-->

</assembly>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...