-1

有人可以告诉我如何将我的程序从任务栏带到前面(我不知道这是个好名字)或者在 c# 中的 winform/wpf 中这个事件的名称是什么。问题有时(不是所有时间)当我最小化我的程序并再次单击然后可以显示它但有时仍然在另一个程序下并且我想在我单击图标时制作代码我的程序然后总是放在前面。

示例涂料

4

1 回答 1

2

尝试使用SetForegroundWindow()andShowWindow()方法它们的导入是

[DllImport("User32.dll")]
internal static extern IntPtr SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll")]
internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

声明一个名为 ActiveResize 的常量(或您想要的任何名称。像这样。internal const int ActiveResize = 3; 更多大小代码在这里。

然后生成一个看起来像这样的激活事件

private void YOURPROGRAM_Activated(object sender, EventArgs e)
{
    Process currentProcess = Process.GetCurrentProcess();
    IntPtr hWnd = currentProcess.MainWindowHandle;
    if (hWnd != User32.InvalidHandleValue)
    {
        User32.SetForegroundWindow(hWnd);
        User32.ShowWindow(hWnd, ActiveResize);
    }
}

这样做是当您以任何方式激活表单时,表单会收到一条激活的消息。当它收到消息时,然后运行此代码,强制将窗口设置为前台。希望这可以帮助。

于 2016-02-18T15:08:52.650 回答