Karmaşık bir güncelleme sırasında tüm değişiklikleri bir kerede görüntülemeyi tercih edebilirim. Bunu yapmama izin veren bir yöntem olduğunu biliyorum, ama ne var?Windows Forms'ta bir formu güncellemeyi nasıl devre dışı bırakırım?
cevap
Ben this.SuspendLayout() & ResumeLayout() yeter bence
BeginUpdate
ve
EndUpdate
yöntemleri veya benzer olan çizim ardından bir güncellemeleri toplu ve
gerçekleştirmek için Forms En karmaşık üçüncü taraf kontrol. Form düzeyinde, böyle bir şey yoktur, ancak Double buffering'u etkinleştirerek ilgilenebilirsiniz.
Özellikleri güncellerken formda veya denetimlerde SuspendLayout ve ResumeLayout yöntemlerini kullanabilirsiniz. Verileri denetimlere bağlarsanız, BeginUpdate ve EndUpdate yöntemlerini kullanabilirsiniz. güncellemeler kontrolleri ve düzeni değişiklikleri içeren eğer
SuspendLayout performansını yardımcı olacaktır: MSDN
Eski Win32LockWindowUpdate işlevini kullanabilirsiniz:
[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. İlginç. –
Bu sözdizimini deneyin: özel statik extern uzun LockWindowUpdate (IntPtr Tutamağı); ve LockWindowUpdate (IntPtr.Zero); –
LockWindowUpdate, titremeyi durdurmak için tasarlanmamış veya amaçlanmamıştır. SetWindowRedraw (hwnd, false) 'yi kullanmalısınız. (Http://blogs.msdn.com/b/oldnewthing/archive/2004/06/10/152612.aspx) –
Ben SuspendLayout() ve ResumeLayout bulmuyorum() istediğini yapar. Moobaa tarafından ölçülen LockWindowsUpdate() işlemi hile yapar. Ancak, LockWindowUpdate yalnızca bir seferde bir pencere için çalışır.
Ayrıca bu deneyebilirsiniz:
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. Bir sistem aygıtını nasıl devre dışı bırakırım?
- 2. ASP.Net: Bir ListItem'i nasıl devre dışı bırakırım?
- 3. QTabWidget'te bir sekmeyi nasıl devre dışı bırakırım?
- 4. Windows PowerShell'i kullanarak UAC'yi nasıl devre dışı bırakırım?
- 5. Önbelleği tamamen nasıl devre dışı bırakırım?
- 6. Netbeans: Bunu nasıl devre dışı bırakırım?
- 7. Matplotlib'deki klavye kısayollarını nasıl devre dışı bırakırım?
- 8. Teamcity'deki kullanıcıları nasıl devre dışı bırakırım?
- 9. Coq'deki özel gösterimi nasıl devre dışı bırakırım?
- 10. OptionMenu'da tek bir seçeneği nasıl devre dışı bırakırım?
- 11. Bir hesabı ASP.NET Üyelik Sağlayıcısı ile nasıl devre dışı bırakırım?
- 12. Bir WPF MenuItem'de Mnemonics'i nasıl devre dışı bırakırım?
- 13. Bir Googletest (gtest) parametreli testini nasıl devre dışı bırakırım?
- 14. WinForms DataGrid'deki düğme hücresini nasıl devre dışı bırakırım?
- 15. Orchard modülünü programsal olarak nasıl devre dışı bırakırım?
- 16. Görsel stüdyodaki komut satırlarından eklentileri nasıl devre dışı bırakırım?
- 17. "Satır sonunun ötesinde imleci nasıl devre dışı bırakırım?"
- 18. C# mesaj kutusu bip sesini nasıl devre dışı bırakırım?
- 19. XCode'da hata olarak işaretlenen uyarıları nasıl devre dışı bırakırım
- 20. jQuery ile bağlantıları dinamik olarak nasıl etkinleştiririm/devre dışı bırakırım?
- 21. iPad web uygulamasında kaydırmayı nasıl devre dışı bırakırım?
- 22. dropzone'un otomatik dosya yüklemesini nasıl devre dışı bırakırım?
- 23. DateTimePicker denetiminde bazı tarihleri nasıl devre dışı bırakırım?
- 24. Yeniden Yapılandırılan Metinlerdeki Uyarıları Nasıl Bastırırım veya Devre Dışı Bırakırım?
- 25. Oyun yapımcısında google play otomatik girişini nasıl devre dışı bırakırım?
- 26. VS PowerTools araç ipuçlarını nasıl devre dışı bırakırım?
- 27. iis 6 E-postaları nasıl devre dışı bırakırım 6
- 28. Yii2'de varlıkları önbelleğe almayı nasıl devre dışı bırakırım?
- 29. Web Data Administrator'da doğrulamayı nasıl devre dışı bırakırım?
- 30. Firebug'ü çift konsol konsolu çıktısından nasıl devre dışı bırakırım?
BeginUpdate ve EndUpdate yöntemleri üzerinde? Bir form bunlara sahip değildir. –