• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

217
Views
CommonOpenFileDialog hace que Windows Form se reduzca

Estuve trabajando en una aplicación de Windows Forms y recientemente agregué una página de configuración simple que permite al usuario seleccionar una carpeta para la salida. OpenFileDialog es feo y no es agradable de usar, por lo que agregué WindowsAPICodePack para obtener acceso a CommonOpenFileDialog , todo bien allí.

Cuando abro CommonOpenFileDialog , la aplicación de formulario de Windows se reduce a un tamaño más pequeño, como se muestra en la imagen adjunta.

A la izquierda está el programa normalmente, a la derecha está con el diálogo abierto:

A la izquierda está el programa normalmente, a la derecha está con el diálogo abierto.

Intenté verificar el tamaño del Form antes y después, eso no cambia, así que estoy chocando contra una pared de ladrillos. Cualquier información sería útil, puedo proporcionar más detalles si es necesario.

El código para abrir el cuadro de diálogo es:

 CommonOpenFileDialog dialog = new CommonOpenFileDialog(); dialog.DefaultDirectory = selectedFolderTextBox.Text; dialog.IsFolderPicker = true; if (dialog.ShowDialog() != CommonFileDialogResult.Ok) return; selectedFolderTextBox.Text = dialog.FileName;
over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Este problema me sucede cuando cambio la Escala y el diseño en Configuración de Windows-> Formulario del sistema 100% a un valor más alto. Probablemente tenga que ver con un escalado alto de DPI y DPI.

Encontré varias soluciones:

Solución 1: Configuración de Windows Forms para soporte de alto DPI

Esta solución es solo para .NET Framework versión 4.7 o superior.

Agregue esto al archivo App.config .

 <System.Windows.Forms.ApplicationConfigurationSection> <add key="DpiAwareness" value="PerMonitorV2" /> </System.Windows.Forms.ApplicationConfigurationSection>

Fuente: Configuración de su aplicación Windows Forms para soporte de alto DPI :

Habilite el reconocimiento de DPI por monitor en el archivo app.config.

Windows Forms presenta un nuevo elemento System.Windows.Forms.ApplicationConfigurationSection para admitir nuevas funciones y personalizaciones agregadas a partir de .NET Framework 4.7. Para aprovechar las nuevas funciones que admiten DPI alto, agregue lo siguiente al archivo de configuración de su aplicación.

 <System.Windows.Forms.ApplicationConfigurationSection> <add key="DpiAwareness" value="PerMonitorV2" /> </System.Windows.Forms.ApplicationConfigurationSection>

Importante

En versiones anteriores de .NET Framework, usó el manifiesto para agregar soporte de alto DPI. Este enfoque ya no se recomienda, ya que anula la configuración definida en el archivo app.config.

Solución 2: Utilice el paquete NuGet Ookii.Dialogs.WinForms

Utilice el paquete NuGet Ookii.Dialogs.WinForms. No tiene el problema de la contracción. Tiene un VistaOpenFileDialog similar al CommonFileDialog de WindowsAPICodePack. También tiene un buen navegador de carpetas VistaFolderBrowserDialog como CommonFileDialog con IsFolderPicker establecido en true .

Solución 3: anule el comportamiento de escalado de DPI alto para el archivo .exe

Esta solución requiere cambiar manualmente la configuración de compatibilidad para cada archivo .exe de la aplicación individualmente, por lo que no es la mejor solución.

Para hacer esto, debe hacer clic con el botón derecho en el archivo .exe, seleccionar Propiedades-> Compatibilidad-> Cambiar la configuración de DPI alta y marcar Anular el comportamiento de escalado de DPI alto y seleccionar una de las opciones (ver: Cómo usar la escala de DPI en Windows 10 para arreglar viejas aplicaciones borrosas )

over 3 years ago · Santiago Trujillo Report

0

Habilite el reconocimiento de dpi agregando el archivo app.manifest y descomente estos bloques.

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

Esto funciona para mí en mi Surface Pro 4 (escala de dpi 200%).

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error