static Dictionary<Control, bool> m_lstFreezeControl = new Dictionary<Control, bool>(); /// <summary> /// 功能描述:停止更新控件 /// </summary> /// <param name="control">control</param> /// <param name="blnToFreeze">是否停止更新</param> public static void FreezeControl(Control control, bool blnToFreeze) { if (blnToFreeze && control.IsHandleCreated && control.Visible && !control.IsDisposed && (!m_lstFreezeControl.ContainsKey(control) || (m_lstFreezeControl.ContainsKey(control) && m_lstFreezeControl[control] == false))) { m_lstFreezeControl[control] = true; control.Disposed += control_Disposed; HZCX.Controls.Controls.NativeMethods.SendMessage(control.Handle, 11, 0, 0); } else if (!blnToFreeze && !control.IsDisposed && m_lstFreezeControl.ContainsKey(control) && m_lstFreezeControl[control] == true) { m_lstFreezeControl.Remove(control); HZCX.Controls.Controls.NativeMethods.SendMessage(control.Handle, 11, 1, 0); control.Invalidate(true); } } static void control_Disposed(object sender, EventArgs e) { try { if (m_lstFreezeControl.ContainsKey((Control)sender)) m_lstFreezeControl.Remove((Control)sender); } catch { } }
使用方法
try { HZCX.Controls.ControlHelper.FreezeControl(this, true); //你的更新界面操作 } finally { HZCX.Controls.ControlHelper.FreezeControl(this, false); }