protected override void WndProc(ref Message m) { switch (m.Msg) { case NativeWindowCommon.WM_VSCROLL: case NativeWindowCommon.WM_HSCROLL: //keep all FitToMDI children at location 0,0 even after scroll foreach (var item in mdiClient.MdiChildren) { TagData tagData = item.Tag as TagData; if (tagData != null && (tagData.WindowType == WindowType.FitToMdi || tagData.IsMDIClientForm)) { item.Location = new Point(); } } mdiClient.Invalidate(); break; case NativeWindowCommon.WM_PAINT: using (Graphics gr = Graphics.FromHwnd(mdiClient.Handle)) { //Paint the mdiClient its children, background image, border etc. ControlRenderer.PaintMgPanel(mdiClient, gr); NativeWindowCommon.ValidateRect(mdiClient.Handle, IntPtr.Zero); } return; default: break; } base.WndProc(ref m); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> internal static void MgPanel_Paint(object sender, PaintEventArgs e) { Control ctrl = sender as MgPanel; // for mgpanel with parent MgTabPage set paint event if (ctrl is MgPanel && ctrl.Parent is MgTabPage) { MgPanel senderMgPanel = (MgPanel)sender; ControlRenderer.FillRectAccordingToGradientStyle(((PaintEventArgs)e).Graphics, senderMgPanel.ClientRectangle, senderMgPanel.BackColor, senderMgPanel.ForeColor, ControlStyle.NoBorder, false, senderMgPanel.GradientColor, senderMgPanel.GradientStyle); } else { ControlRenderer.PaintMgPanel(ctrl, e.Graphics); } }