lbernstein123 Ответов: 0

Как я показываю форму поверх окон, не крадя фокус


В 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

Вы можете использовать "всегда сверху" / верхнее окно, но все равно должны активировать окно "под" после показа "верхнего" окна (если оно активируется). И / или отключите фокус / активацию для этого окна.

0 Ответов