Linux 拨号vps windows公众号手机端

怎么使messagebox弹出后不获取窗口焦点

lewis 6年前 (2019-02-06) 阅读数 10 #程序编程
文章标签 messagebox

要使MessageBox弹出后不获取窗口焦点,可以通过以下两种方法实现:

  1. 使用MessageBoxOptions参数:
MessageBox.Show("Message", "Title", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.NoFocus);

这里的MessageBoxOptions参数中的NoFocus选项可以阻止MessageBox获取焦点。

  1. 使用Win32 API函数设置窗口样式:
using System.Runtime.InteropServices;
public class MessageBoxHelper
{
[DllImport("user32.dll")]
public static extern IntPtr GetActiveWindow();
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern int MessageBox(IntPtr hWnd, string text, string caption, int type);
public static void Show(string message, string caption)
{
IntPtr activeWindow = GetActiveWindow();
MessageBox(activeWindow, message, caption, 0);
SetForegroundWindow(activeWindow);
}
}

这里的MessageBoxHelper类使用了GetActiveWindow和SetForegroundWindow函数来获取和恢复焦点。然后通过MessageBox函数弹出消息框,并在弹出后恢复焦点到之前的窗口。

使用这两种方法中的任一种都可以实现MessageBox弹出后不获取窗口焦点。

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门