日期:2014-05-20  浏览次数:20924 次

如何锁定MDI子窗体的位置,为什么用Location=new Point(0,0)不起作用?
如何锁定MDI子窗体的位置,为什么用Location=new   Point(0,0)不起作用?
请问有什么好的方法?

------解决方案--------------------
需要把StartPosition设置为Manual即可...
------解决方案--------------------
同上
------解决方案--------------------
this.SetBounds
------解决方案--------------------
要想让窗体显示后不可移动(锁定位置)可以参考下代码来操作(用API):

[DllImport( "User32.dll ")]
public static extern int GetSystemMenu(int hWnd, int bRevert);
[DllImport( "User32.dll ")]
public static extern int RemoveMenu(int hMenu, int nPosition, int wFlags);

public const int MF_BYCOMMAND = 0x00000000;
public const int MF_DISABLED = 0x00000002;
public const int MF_GRAYED = 0x00000001;
public const int SC_MOVE = 0xf010;

protected override void OnLoad(EventArgs e)
{
int hMenu;
hMenu = GetSystemMenu(this.Handle.ToInt32(), 0);
//移动菜单
RemoveMenu(hMenu, SC_MOVE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}

------解决方案--------------------
hbxtlhx方法好。我最近也才发现这个方法的。不过是vc下用的。这样是比较完美的禁止移动的方法了。