8

我发现了一些关于此的主题,但这些都不能帮助我解决我的问题,我想在它启动后将焦点设置在新创建的 winform 窗口上。

我在自己的新线程中开始表单:

application.Run(new InvisibleForm());

并出现窗体,但焦点仍设置在 windows 中最后一个选定的窗口上。这个表单没有标题栏,不在任务面板中看到,它还有一个 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);

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

this.TopMost = true;
this.Focus();
this.BringToFront();
this.Activate();

有没有办法以编程方式将点击/焦点事件触发到表单,以便它将自己设置为焦点事件?

4

2 回答 2

8

Activate()在表单的“显示”状态下使用该方法很重要,因此为显示的事件创建一个侦听器并在那里使用您的焦点/前端方法

于 2012-04-22T18:00:21.477 回答
1

你可以试试这段代码

this.ShowDialog();

上面的代码与 MessageBox 相同,请注意。所以最后出现的表单必须关闭,并且可以再次访问另一个表单。

于 2016-01-18T02:03:50.137 回答