1、主窗体using System.Runtime.InteropServices;
2、主窗体添加以下代码:
private const int GWL_STYLE = -16;
private const int GWL_EXSTYLE = -20;
private const int WS_BORDER = 0x00800000;
private const int WS_EX_CLIENTEDGE = 0x00000200;
private const uint SWP_NOSIZE = 0x0001;
private const uint SWP_NOMOVE = 0x0002;
private const uint SWP_NOZORDER = 0x0004;
private const uint SWP_NOACTIVATE = 0x0010;
private const uint SWP_FRAMECHANGED = 0x0020;
private const uint SWP_NOOWNERZORDER = 0x0200;
// Win32 方法
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int GetWindowLong(IntPtr hWnd, int Index);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SetWindowLong(IntPtr hWnd, int Index, int Value);
[DllImport("user32.dll", ExactSpelling = true)]
private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter,
int X, int Y, int cx, int cy, uint uFlags);
3、主窗体Load方法中添加以下代码:
for (int i = 0; i < this.Controls.Count; i++)
{
var mdiClientForm = this.Controls[i] as MdiClient;
if (mdiClientForm == null) continue;
// 找到了mdi客户区
// 取得客户区的边框
int style = GetWindowLong(mdiClientForm.Handle, GWL_STYLE);
int exStyle = GetWindowLong(mdiClientForm.Handle, GWL_EXSTYLE);
style &= ~WS_BORDER;
exStyle &= ~WS_EX_CLIENTEDGE;
// 调用win32设定样式
SetWindowLong(mdiClientForm.Handle, GWL_STYLE, style);
SetWindowLong(mdiClientForm.Handle, GWL_EXSTYLE, exStyle);
// 更新客户区
SetWindowPos(mdiClientForm.Handle, IntPtr.Zero, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
UpdateStyles();
break;
}