开始后将重点放在winform上

don*_*are 8 .net c# focus setfocus winforms

我找到了一些关于这个的主题,但这些都没有帮助我解决我的问题,我想在开始之后将重点放在新创建的winform窗口上.

我在一个自己的新线程中启动表单:

application.Run(new InvisibleForm());
Run Code Online (Sandbox Code Playgroud)

并且表单出现,但焦点仍然是从窗口最后选择的窗口设置的.此表单没有标题栏,并且不在任务面板中查看,它还具有TransparencyKey集:

this.AutoScaleDimensions = new SizeF(6F, 13F);
this.AutoScaleMode = AutoScaleMode.Font;
this.BackColor = SystemColors.AppWorkspace;
this.ClientSize = new Size(992, 992);
this.ControlBox = false;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "InvisibleForm";
this.Opacity = 0.5;
this.ShowInTaskbar = false;
this.TransparencyKey = SystemColors.AppWorkspace;
this.Load += new EventHandler(this.InvisibleForm_Load);
Run Code Online (Sandbox Code Playgroud)

现在我尝试了一些方法,但没有一个让我专注于表单或可以在前台/所有其他窗口的顶部设置表单:

this.TopMost = true;
this.Focus();
this.BringToFront();
this.Activate();
Run Code Online (Sandbox Code Playgroud)

有没有办法将程序单击/焦点事件发送到表单,以便在焦点上设置自己的事件?

don*_*are 8

Activate()在表单的"显示"状态下使用该方法很重要,因此为显示的事件创建一个监听器并在那里使用您的focus/front方法