要使MessageBox彈出后不獲取窗口焦點,可以通過以下兩種方法實現:
MessageBox.Show("Message", "Title", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.NoFocus);
這里的MessageBoxOptions參數中的NoFocus選項可以阻止MessageBox獲取焦點。
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彈出后不獲取窗口焦點。