Während einer komplizierten Aktualisierung möchte ich vielleicht alle Änderungen gleichzeitig anzeigen. Ich weiß, dass es eine Methode gibt, die mir erlaubt, das zu tun, aber was ist das?Wie kann ich das Aktualisieren eines Formulars in Windows Forms deaktivieren?
Antwort
Ich denke this.SuspendLayout() & ResumeLayout() sollte es tun
Komplexestes von Drittanbietern Windows-Komponenten BeginUpdate
und EndUpdate
Methoden oder ähnlichen Formen haben, eine Batch-Updates und dann zeichnen die auszuführen Steuerung. Auf der Formularebene gibt es so etwas nicht, aber Sie könnten interessiert sein, indem Sie Double buffering aktivieren.
Sie können die Methoden SuspendLayout und ResumeLayout beim Aktualisieren von Eigenschaften in Formularen oder Steuerelementen verwenden. Wenn Sie Daten an Steuerelemente binden, können Sie die Methoden BeginUpdate und EndUpdate verwenden.
SuspendLayout wird die Leistung helfen, wenn die Updates Änderungen an Kontrollen und das Layout betreffen: MSDN
können Sie verwenden, um die alte Win32LockWindowUpdate Funktion:
[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);
}
Hmmmm. Interessant. –
Probieren Sie stattdessen diese Syntax aus: private statisch extern lang LockWindowUpdate (IntPtr Handle); und LockWindowUpdate (IntPtr.Zero); –
LockWindowUpdate ist nicht dafür ausgelegt oder beabsichtigt, das Flackern zu stoppen. Sie sollten 'SetWindowRedraw (hwnd, false)' verwenden. (http://blogs.msdn.com/b/oldnewthing/archive/2004/06/10/152612.aspx) –
finde ich nicht SuspendLayout() und ResumeLayout() tut, was Sie verlangen. Die LockWindowsUpdate() von Moobaa erfüllt den Zweck. Das LockWindowUpdate funktioniert jedoch nur für jeweils ein Fenster.
Sie können auch versuchen, diese:
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();
}
}
}
- 1. Wie bekomme ich alle Steuerelemente eines Formulars in Windows Forms?
- 2. Wie kann ich das Systemmenü eines Windows Forms anpassen?
- 3. Das Erscheinungsbild eines Windows-Formulars erstellen
- 4. Kann ich die Schaltfläche 'Schließen' eines Formulars mit C# deaktivieren?
- 5. Wie kann ich auf einen Besitzer eines Windows Forms verweisen?
- 6. Wie kann ich Hittests in einem Windows Form deaktivieren?
- 7. Drucken eines scrollfähigen Windows-Formulars.
- 8. Initialisierungsfehler bezüglich eines Windows-Formulars
- 9. Wie öffne ich app.config in Windows Forms?
- 10. Wie kann ich die Steuerelemente eines MS-Access-Formulars iterieren?
- 11. Wie verschiebe ich ein Windows-Menü in MDI Windows Forms?
- 12. Wie kann ich den Eingabewert eines Formulars in Javascript setzen?
- 13. Wie kann ich verhindern, dass das Keydown-Ereignis eines Formulars in C# mehr als einmal ausgelöst wird?
- 14. Installation eines Oracle-Formulars Entwicklungsmaschine
- 15. Wie kann ich den Namen eines Labels in Xamarin Forms
- 16. Wie kann ich Rahmen zum Beschriften von Windows Forms hinzufügen?
- 17. Wie kann ich mit einem Windows Forms datetimepicker ArgumentOutOfRangeException umgehen?
- 18. Setze das übergeordnete Element eines Formulars
- 19. Wie kann ich Tastenkombinationen für ein Windows Forms TabControl einrichten?
- 20. Wie kann ich die genaue Höhe eines listbox in Windows Forms (C#)?
- 21. IPC Windows Service Windows Forms
- 22. Fehler im Windows Forms Editor
- 23. SignalR in Windows Forms
- 24. Wie kann ich von Windows Forms zu MySQL verbinden?
- 25. VB.NET: Wo ist Standardkonstruktor eines Windows-Formulars?
- 26. Wie kann ich Rollen in einem Windows Azure-Projekt deaktivieren?
- 27. Kann Formular in der Prozedur eines anderen Formulars nicht verweisen
- 28. Registerkartenindex in Windows Forms
- 29. Wie kann ich Windows-Schlüssel in C# deaktivieren?
- 30. Klassenname in Windows Forms
Beginupdate und EndUpdate Methoden, auf denen? Ein Formular enthält sie nicht. –