先生,我有三张表格。我想要确定所有表单的位置。我的意思是,我想防止用户移动表单,表单必须显示在我固定的位置。如何实现这一点..请回复...谢谢..
发布于 2011-01-28 15:14:17
尝尝这个
私有空发送器(object childForm_LocationChanged,EventArgs e)
{ this.Location =新点(x,y);//根据需要指定固定位置}
发布于 2011-01-28 15:16:58
通过使用以下命令设置窗体的位置
this.WindowState = FormWindowState.Normal;
this.StartPosition = FormStartPosition.CenterScreen;如果您有自己的坐标固定,请使用此
this.Bounds = new Rectangle(new Point(50,50) , this.Size);要防止移动,您可以覆盖表单的OnMove方法
protected override void OnMove(EventArgs e)
{
this.Bounds = this.RestoreBounds;
}发布于 2011-01-28 20:14:43
您可以强制默认的 WM_NCHITTEST 处理程序的结果。
WM_NCHITTEST消息告诉窗口用户单击了窗口的非工作区的哪一部分。这会告诉Windows用户例如想要调整窗口大小或单击Close按钮。
您可以强制默认结果,这样Windows就不会告诉用户想要拖动窗口或调整窗口大小:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_NCHITTEST)
{
switch ((HitTestValues)m.Result)
{
case HitTestValues.HTBORDER:
case HitTestValues.HTBOTTOM:
case HitTestValues.HTBOTTOMLEFT:
case HitTestValues.HTBOTTOMRIGHT:
case HitTestValues.HTCAPTION:
case HitTestValues.HTGROWBOX:
case HitTestValues.HTLEFT:
case HitTestValues.HTRIGHT:
case HitTestValues.HTTOP:
case HitTestValues.HTTOPLEFT:
case HitTestValues.HTTOPRIGHT:
m.Result = (IntPtr)HitTestValues.HTNOWHERE;
break;
}
}
}
private const int WM_NCHITTEST = 0x84;
enum HitTestValues
{
HTERROR = -2,
HTTRANSPARENT = -1,
HTNOWHERE = 0,
HTCLIENT = 1,
HTCAPTION = 2,
HTSYSMENU = 3,
HTGROWBOX = 4,
HTMENU = 5,
HTHSCROLL = 6,
HTVSCROLL = 7,
HTMINBUTTON = 8,
HTMAXBUTTON = 9,
HTLEFT = 10,
HTRIGHT = 11,
HTTOP = 12,
HTTOPLEFT = 13,
HTTOPRIGHT = 14,
HTBOTTOM = 15,
HTBOTTOMLEFT = 16,
HTBOTTOMRIGHT = 17,
HTBORDER = 18,
HTOBJECT = 19,
HTCLOSE = 20,
HTHELP = 21
}
}稍微调整一下您希望在switch语句中包含的值。例如,您可以禁用表单上的最小化/最大化按钮,也可以将它们添加到switch语句中。
https://stackoverflow.com/questions/4825612
复制相似问题