首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定位Mdichild表单?

如何定位Mdichild表单?
EN

Stack Overflow用户
提问于 2011-01-28 14:46:20
回答 3查看 3.7K关注 0票数 3

先生,我有三张表格。我想要确定所有表单的位置。我的意思是,我想防止用户移动表单,表单必须显示在我固定的位置。如何实现这一点..请回复...谢谢..

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-28 15:14:17

尝尝这个

私有空发送器(object childForm_LocationChanged,EventArgs e)

{ this.Location =新点(x,y);//根据需要指定固定位置}

票数 0
EN

Stack Overflow用户

发布于 2011-01-28 15:16:58

通过使用以下命令设置窗体的位置

代码语言:javascript
复制
this.WindowState = FormWindowState.Normal;
this.StartPosition = FormStartPosition.CenterScreen;

如果您有自己的坐标固定,请使用此

代码语言:javascript
复制
this.Bounds = new Rectangle(new Point(50,50) , this.Size);

要防止移动,您可以覆盖表单的OnMove方法

代码语言:javascript
复制
protected override void OnMove(EventArgs e)
        {
            this.Bounds = this.RestoreBounds;
        }
票数 1
EN

Stack Overflow用户

发布于 2011-01-28 20:14:43

您可以强制默认的 WM_NCHITTEST 处理程序的结果。

WM_NCHITTEST消息告诉窗口用户单击了窗口的非工作区的哪一部分。这会告诉Windows用户例如想要调整窗口大小或单击Close按钮。

您可以强制默认结果,这样Windows就不会告诉用户想要拖动窗口或调整窗口大小:

代码语言:javascript
复制
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语句中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4825612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档