首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止在使用Ctrl+Tab在其他mdichild表单之间切换时,某个mdichild表单获得焦点/激活?C#

如何防止在使用Ctrl+Tab在其他mdichild表单之间切换时,某个mdichild表单获得焦点/激活?C#
EN

Stack Overflow用户
提问于 2011-09-28 22:46:45
回答 1查看 977关注 0票数 1

在我的mdi应用程序中,我有四个mdichild窗体,其中一个用作背景并持有一些控件。

当使用Ctrl+Tab在其他mdichild表单之间切换时,如何防止这个后台mdichild表单获得焦点/激活?

换句话说,如何从Ctrl+Tab序列中跳过这个后台MDI子窗体?并将其z顺序设置为最后一个,这样当在它们之间切换时,它就不会隐藏其他mdichild形式?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-02 21:19:15

通过重写Form.ProcessCmdKey并跳过背景窗体。

代码语言:javascript
复制
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if ((keyData & Keys.Tab) == Keys.Tab && (keyData & Keys.Control) == Keys.Control)
        {

            Form nextForm = GetNexMdiChildForm();
            if (nextForm != null)
            {
                nextForm.Activate();
                return false;
            }
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

    private Form GetNexMdiChildForm()
    {
        //get current form index
        Form currentForm = this.ActiveMdiChild;
        int currentFormIndex = Array.IndexOf(this.MdiChildren, currentForm);

        //get next form index
        int nextFormIndex = currentFormIndex + 1;
        if (this.MdiChildren.Length == nextFormIndex)
        {
            nextFormIndex = 0;
        }

        //check if next form is Form 3
        if (this.MdiChildren[nextFormIndex] == background_mdichild_form )
        {
            nextFormIndex++;
            if (this.MdiChildren.Length == nextFormIndex)
            {
                nextFormIndex = 0;
            }
        }
        return MdiChildren[nextFormIndex];
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7585080

复制
相关文章

相似问题

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