开始后将重点放在winform上

时间:2012-04-19 08:44:10

标签: c# .net winforms focus setfocus

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

我在自己的新主题中使用以下内容启动表单:

application.Run(new InvisibleForm());

并显示表单,但焦点仍然是从窗口最后选择的窗口设置的。此表单没有标题栏,并且不在任务面板中查看,它还有一个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();

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

2 个答案:

答案 0 :(得分:8)

在表单的“显示”状态下使用Activate()方法非常重要,所以create a listener for the shown event并使用您的焦点/前端方法

答案 1 :(得分:1)

你可以尝试这段代码

this.ShowDialog();

以上代码与MessageBox相同,注意。因此,最后一个表单必须关闭,并且可以再次访问另一个表单。