c#怎么做到弹出一个窗口,但焦点依然在原窗口上而不会到弹出窗口上来?

 我来答
然后去远足
推荐于2017-11-26 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2403万
展开全部

题主的表意不明确。

 

● 如果是想说,题主自己编写了一个有两个窗口的程序,在第一个窗口时弹出第二个窗口,但焦点还在第一个窗口上,那么只需要在新的窗口 Show() 之后,this.Focus(); 就可以继续让焦点在本窗口上了。

 

● 如果是想说,向QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框弹出后都不影响焦点的变化,那么有两种方法:

 

要么重写需要弹出的窗体的事件:

protected override CreateParams CreateParams    
{
    get
    {
        const int WS_EX_NOACTIVATE = 0x08000000;
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= WS_EX_NOACTIVATE;
        return cp;
    }
}
// CreateParams 在 System.Windows.Forms.Controls 命名空间

要么调用系统钩子:

// 引用系统钩子
[DllImport("user32.dll")]
public static extern IntPtr GetActiveWindow();
 
[DllImport("user32.dll")] 
public static extern IntPtr SetActiveWindow(IntPtr hwnd);
  
// 在窗口弹出时做以下处理
IntPtr activeForm = GetActiveWindow(); // 先得到当前的活动窗体 
new form2.Show(false); // 弹出新窗体
SetActiveWindow(activeForm); // 在把焦点还给之前的活动窗体
网易云信
2023-12-06 广告
各种消息提醒、在线状态、消息里面发礼物打电话都可以实现的。网易云信 1 对 1 UIKit 组件深入娱乐社交领域,提供一站式的产品方案,助力开发者更好、更快地构建 1 对 1 社交平台。此外,我们也提供基于底层 SDK 集成方案,使业务能够... 点击进入详情页
本回答由网易云信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式