visual propiedades formularios formulario escala automático automatic ajuste .net winforms

.net - formularios - propiedades de un formulario en c#



¿Cómo desactivo la actualización de un formulario en Windows Forms? (6)

Durante una actualización complicada, es posible que prefiera mostrar todos los cambios a la vez. Sé que hay un método que me permite hacer esto, pero ¿qué es?


Creo que this.SuspendLayout () y ResumeLayout () deberían hacerlo


No creo que SuspendLayout () y ResumeLayout () hagan lo que estás pidiendo. El LockWindowsUpdate () mencionado por moobaa hace el truco. Sin embargo, LockWindowUpdate solo funciona para una ventana a la vez.

También puedes probar esto:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Win32; using System.Runtime.InteropServices; namespace WindowsTest { public partial class Form1 : Form { [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam); private const int WM_SETREDRAW = 11; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { SendMessage(this.Handle, WM_SETREDRAW, false, 0); // Do your thingies here SendMessage(this.Handle, WM_SETREDRAW, true, 0); this.Refresh(); } } }


Puede usar los métodos SuspendLayout y ResumeLayout en el formulario o los controles al actualizar las propiedades. Si está vinculando datos a los controles, puede usar los métodos BeginUpdate y EndUpdate.


SuspendLayout ayudará al rendimiento si las actualizaciones implican cambios en los controles y el diseño: MSDN


Puede usar la antigua función Win32 LockWindowUpdate :

[DllImport("user32.dll")] private static extern long LockWindowUpdate(long Handle); try { // Lock Window... LockWindowUpdate(frm.Handle); // Perform your painting / updates... } finally { // Release the lock... LockWindowUpdate(0); }


La mayoría de los componentes de Windows Forms de terceros complejos tienen métodos BeginUpdate y EndUpdate o similares, para realizar un lote de actualizaciones y luego dibujar el control. En el nivel de formulario, no existe tal cosa, pero podría interesarle habilitar el doble almacenamiento en búfer .