强制表单使用windows c#application强制表单引入所有其他应用程序的强大方法是什么?
答案 0 :(得分:15)
强行强迫用户点击任务栏中的应用程序窗口图标。
答案 1 :(得分:7)
将Form.TopMost设置为true
答案 2 :(得分:6)
以下代码对我有用:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace LicenseManager {
public static class WinApi {
[DllImport( "user32.dll" )]
static extern bool SetWindowPos( IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags );
static private IntPtr HWND_TOPMOST = new IntPtr( -1 );
private const uint SWP_NOSIZE = 0x0001;
private const uint SWP_NOMOVE = 0x0002;
static public void MakeTopMost( Form f ) {
SetWindowPos( f.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
}
}
}
答案 3 :(得分:5)
this.BringToFront();
对我有用。
答案 4 :(得分:1)
使用SetWindowsPos()api函数
答案 5 :(得分:1)
有关此内容的更多信息可能有用。我使用Charles Jenkins的答案通过调用form.load事件处理程序中的“MakeTopMost”函数使我的winforms应用程序成为最顶层的。我需要此功能,因为我的winforms应用程序是由MSI安装启动的,Windows安装程序进度条将显示在顶部。
但是,然后将主窗体放在主窗体想要显示的其他子窗体的顶部。为了解决这个问题,我在form.shown事件处理程序中调用了我的函数MakeWindowNormal,将主窗体恢复为正常窗口,因为它现在位于Windows安装程序进度条前面,因为它已经加载并激活(参见{{3对于事件顺序)。这允许子表单(以及用户移动它们时的其他窗口)现在位于主表单的前面。
static public void MakeWindowNormal(Form f)
{
SetWindowPos(f.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}