在Windows窗體,創建多面板的(面板的包含多個面板的),每個小組的有不同的背景顏色,當運行應用程序,如果擴大形式手段,在Panles越來越搖動幾毫秒,然後到達需要的地方。不能修復它。你能給我的想法來解決這個..閃爍的窗戶形式
感謝
Saravanan
在Windows窗體,創建多面板的(面板的包含多個面板的),每個小組的有不同的背景顏色,當運行應用程序,如果擴大形式手段,在Panles越來越搖動幾毫秒,然後到達需要的地方。不能修復它。你能給我的想法來解決這個..閃爍的窗戶形式
感謝
Saravanan
固定it.Use這個代碼,以避免震動,同時擴大窗戶的形式。它正是所謂的閃爍。
使用的命名空間:
Using System.Runtime.InteropServices
創建一個類,並編寫代碼:
internal static class NativeWinAPI
{
internal static readonly int GWL_EXSTYLE = -20;
internal static readonly int WS_EX_COMPOSITED = 0x02000000;
[DllImport("user32")]
internal static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32")]
internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
}
,並在窗體構造函數中添加代碼:
public MyForm()
{
InitializeComponent();
int style = NativeWinAPI.GetWindowLong(this.Handle,NativeWinAPI.GWL_EXSTYLE);
style |= NativeWinAPI.WS_EX_COMPOSITED;
NativeWinAPI.SetWindowLong(this.Handle, NativeWinAPI.GWL_EXSTYLE, style);
}
我得到這個結果來自: Avoid Flickering in Windows Forms?
所有感謝您的回覆中在窗體的resize事件,當你調整你的面板,在開始和Layout.Resume添加Layout.Suspend()( ) 最後。這應該停止搖晃。
晃動基本上是因爲當窗體大小變化,以及子面板接收觸發來調整自己,他們都製造恐慌和混亂之中自己在努力調整自己在給定的佈局。當您暫停佈局時,實際活動混亂不會顯示在用戶界面上,並且震動消失,但結果不是您可能想到的。但是,先試試然後再決定。
首先,我爲我的形式私人無效myform_Resize(對象發件人,EventArgs的){ this.SuspendLayout創建的事件(); this.ResumeLayout(); }但同樣的震動再次發生..我做的方式是否正確? – User6667769
以及我在運行時沒有添加任何控件 – User6667769
嗯......我想不是。如果它不在Form_Resize()中,你在調整面板的位置?你是否將它們停靠在窗體上? – athar13