首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDI的ShowDialog属性

MDI的ShowDialog属性
EN

Stack Overflow用户
提问于 2015-04-16 14:16:18
回答 1查看 578关注 0票数 2

问题:

如何以ShowDialog()格式显示MDI子表单?

我尝试过的:

代码语言:javascript
复制
private void Add()
        {

            ModuleAddPopUp map = new ModuleAddPopUp();
            map.StartPosition = FormStartPosition.CenterScreen;
            map.ShowDialog();          
        }

执行上述操作后,表单将显示为弹出的中央屏幕,但是当MDI没有最大化时,我可以将表单拖到MDI之外。

代码语言:javascript
复制
private void Add()
        {
            ModuleAddPopUp map = new ModuleAddPopUp();
            FormFunctions.OpenMdiDataForm(App.Program.GetMainMdiParent(), map);

        }

通过上述操作,表单显示中心屏幕,不允许将表单拖出MDI之外,而是充当map.Show(),而不是map.ShowDialog();

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 14:50:23

将此代码添加到您的ModuleAddPopup类中:

代码语言:javascript
复制
protected override void WndProc(ref Message message)
{
    const int WM_SYSCOMMAND = 0x0112;
    const int SC_MOVE = 0xF010;
    //SC_SIZE = 0XF000 if you also want to prevent them from resizing the form.
    //Add it to the 'if' condition.
    switch (message.Msg)
    {
        case WM_SYSCOMMAND:
            int command = message.WParam.ToInt32() & 0xfff0;
            if (command == SC_MOVE)
                return;
            break;
    }

    base.WndProc(ref message);
}

这是包装在C#代码中的本机代码,如这里中所示。但是,这将阻止用户将对话框窗体移动到任何位置。

然后,以你的主要形式:

代码语言:javascript
复制
private void Add()
{
    ModuleAddPopUp map = new ModuleAddPopUp();
    map.StartPosition = FormStartPosition.CenterParent;
    map.ShowDialog();          
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29677441

复制
相关文章

相似问题

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