Как я показываю форму поверх окон, не крадя фокус
В C# WinForms я пытаюсь создать доказательство концепции. Попытка поместить окно поверх других окон без кражи фокуса ввода из того, что пользователь делал до того, как окно появилось. Допустим, пользователь набирает электронное письмо, и моя форма будет частично или полностью покрывать электронную почту, пользователь все равно должен иметь возможность продолжать набирать электронное письмо (очевидно, пользователь может не видеть, что он набирает, но все же...)
Я попробовал несколько вещей ниже, не смог добиться желаемого эффекта.
Что я уже пробовал:
public partial class Form1 : Form { private const int SW_SHOWNA = 4; [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private Timer timer; public Form1() { InitializeComponent(); timer = new Timer(); timer.Interval = 2000; timer.Tick += Timer_Tick; timer.Enabled = true; } private void Timer_Tick(object sender, EventArgs e) { Console.WriteLine("Raised: {0}", e.ToString()); //this.Visible = true; //this.BringToFront(); this.Activate(); ShowWindow(this.Handle, SW_SHOWNA); //this.Show(); } protected override bool ShowWithoutActivation { get { return true; } }
Gerry Schmitz
Вы можете использовать "всегда сверху" / верхнее окно, но все равно должны активировать окно "под" после показа "верхнего" окна (если оно активируется). И / или отключите фокус / активацию для этого окна.