WinForms 新窗体后台打开完美的解决

最近在做浏览器开发时,想要实现 IE 6那种多窗体,又允许后台打开而不抢占视野的方式。

WinForms 应用程序中想要后台打开一个新的窗体,而不(抢焦)、(遮挡)目前窗体。

需要注意的是,SW_SHOWNOACTIVATE打开的“不抢焦”窗体,是不会执行 Shown 和 Load。一定要注意!放置首页,如文章质量不够,有劳编辑移除:)

最简单的方法如下:

   public class TestForm : Form
        {

            const int SW_SHOWNOACTIVATE = 4;
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

            protected override void OnCreateControl()
            {
                base.OnCreateControl();
                // 在这里,可以增加其他标识来标识
                if(this.Tag != null)
                {
                    (this.Tag as Form).TopMost = false;
                    this.Tag = null;
                }

            }

            private void NewWindow(bool focused)
            {
                var f = new TestForm();

                if(focused) f.Show();
                else
                {
                    this.TopMost = true;
                    f.Tag = this;
                    ShowWindow(f.Handle, SW_SHOWNOACTIVATE);
                }
            }
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Visual Studio 2015 前端开发工作流

Visual Studio 2015 CTP 5,全称为 Visual Studio 2015 Community Technology Preview 5,意...

2379
来自专栏张善友的专栏

Silverlight 2 Beta 1学习资源

Silverlight 2 Beta 1发布了,大家都介绍了怎么去下载安装了,晚上整理了一些资料放上来和大家共享: 1、Silverlight 2 Beta 1...

1837
来自专栏walterlv - 吕毅的博客

.NET/C# 使窗口永不激活(No Activate 永不获得焦点)

发布于 2018-07-24 06:19 更新于 2018-08...

3942
来自专栏软件开发

DotNet 资源大全中文版(Awesome最新版)

Awesome系列的.Net资源整理。awesome-dotnet是由quozd发起和维护。内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、I...

7848
来自专栏林德熙的博客

WPF 在 Alt+Tab 隐藏窗口

最近在开发一个 Toast 窗口,因为这个窗口不能在显示之后关闭,因为可能用户会不停让窗口显示,所以只能 Hide 。但是这样会在 切换窗口看到这个窗口,所以我...

2422
来自专栏WindCoder

IDEA常用设置

setting -> Editor ->code style ->line separator(for new files)

621
来自专栏张善友的专栏

ASP.NET MVC Framework 动态汇集

Scott Guthrie在ALT.NET会议中展示了ASP.NET MVC Framework,它的CTP版本将于今年年底放出。 这个框架将支持以下特性: ...

1965
来自专栏张善友的专栏

Silverlight 2 开发环境

第一步安装 Visual Studio 2008 with SP1,这是主要的Silverlight 2 开发环境,可以选择Visual Web Develop...

1889
来自专栏林德熙的博客

win10 uwp 判断设备类型

本文提供一个方法,可以判断当前的设备是PC还是手机,UWP 判断当前的 PC 是否平板模式,判断是否苏非的设备

1531
来自专栏游戏杂谈

IOS应用提交所需的ICON

如果提交的ipa包中,未包含必要的Icon就会收到类似的通知,为什么偏偏是Icon-76呢?

1062

扫码关注云+社区

领取腾讯云代金券