Я использую приведенный ниже код, чтобы всплывать на экране поверх всего, но он не украл фокус.Закрытая форма, не показывающая в приложении openforms
Это прекрасно работает, но теперь мне нужно, чтобы закрыть форму, форма сама по себе не показывает в Application.OpenForms
Как я могу идти об этом?
Настройка и откройте форму
frmClientCall frm = new frmClientCall {StartPosition = FormStartPosition.Manual, Text = "Phone Call"};
frm.Location = new System.Drawing.Point(
Screen.PrimaryScreen.WorkingArea.Width - frm.Width,
Screen.PrimaryScreen.WorkingArea.Height - frm.Height - 202
);
frm.lblClient.Text = URI;
frm.ShowInactiveTopmost();
код для предотвращения фокус на форме
private const int SW_SHOWNOACTIVATE = 4;
private const int HWND_TOPMOST = -1;
private const uint SWP_NOACTIVATE = 0x0010;
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
static extern bool SetWindowPos(
int hWnd, // Window handle
int hWndInsertAfter, // Placement-order handle
int X, // Horizontal position
int Y, // Vertical position
int cx, // Width
int cy, // Height
uint uFlags); // Window positioning flags
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public void ShowInactiveTopmost()
{
ShowWindow(Handle, SW_SHOWNOACTIVATE);
SetWindowPos(Handle.ToInt32(), HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE);
}
Спасибо за это, тест форма, похоже, сработала, просто нужно проверить форму тоста с помощью реализации телефонной системы, чтобы убедиться, что форма закрывается при запуске события, а затем я буду отмечать как правильный ответ! – Neo